본문 바로가기

Java

(13)
@RequiredArgsConstructor Final 키워드가 붙은 Field 'final' 키워드가 붙은 Field는 객체가 생성되는 시점에 반드시 값이 초기화 되어야 한다. final Field를 초기화하는 두가지 방법이 있다. 1. 사용자가 직접 Field에 값을 설정한다. 2. 생성자에서 해당 Field의 값을 초기화 한다. 생성자에서도 1과 같이 사용자가 직접 Field 의 값을 설정하는 방법이 있고, 생성자의 Argument로 외부에서 값을 주입받아서 값을 초기화 할 수 있다. 어쨌든 무조건Field를 초기화 해야한다. 코딩을 하다보면 final 키워드가 붙은 Field가 점점 많아질 수 있다. 그럴때마다 생성자의 Argument의 개수가 점점 늘어나게 된다. 그럴때마다 생성자를 새로 생성해야 한다. 이런 불편을 덜기위해, Lombok..
try-with-resources 를 사용하자 0. 문제 상황 Read 버튼을 누르면 파일을 읽어 TextField에 표시하고, Delete를 누르면 파일을 삭제하는 간단한 Swing Application 이다. Read 버튼을 누르면 Scanner 객체를 이용해 파일을 읽는다. Delete 버튼은 File.delete() 메서드로 파일을 삭제한다. Read 버튼을 누르지 않고 Delete 버튼을 먼저 누르면, 파일은 문제없이 삭제된다. 그러나 Read 버튼으로 파일을 읽고 Delete 버튼을 누르면, 파일이 삭제되지 않은것을 확인할 수 있다. 혹시 프로세스에서 사용중이라 삭제가 안되나 싶어 Windows 탐색기에서 삭제를 시도하니 아래와 같은 경고창이 나왔다. 1. Scanner.close() Scanner 로 파일을 읽고, Resource(tes..
Reflection 을 이용해 Interface 정보 얻기 Dog 클래스는 Bark 와 Run 인터페이스를 구현한다고 가정한다. public class Dog implements Bark, Run{ @Override public void bark() { // do-something } @Override public void run() { // do-something } } 이때, Reflection 을 이용해 Dog 가 구현하는 Bark와 Run interface 정보를 얻을 수 있다. public class ClassNameTest { @Test void getInterfaces () { Dog dog = new Dog(); Class[] interfaces = dog.getClass().getInterfaces(); for(int i=0; i