Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 객체를 생성하는 new라는 키워드가 있듯이, 자바는 두 가지 객체 소멸자를 제공한다. finalizer cleaner 하지만 이 두 기능은 예측할 수 없고, 상황에 따라 위험할 수 있어 일반적으로 불필요하다. finalizer finalizer 메소드는 Object 클래스 내부에 있어, @Override를 통해 재정의할 수 있다. @Deprecated(since="9") protected void finalize() throws Throwable { } 하지만 해당 메소드를 살펴보면, 위와 같이 finalze는 Java 9 버전부터 Deprecated 처리된 것을 알..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. String 객체 String은 보통 객체를 생성하지 않고, 리터럴을 이용해 값을 초기화한다. 왜 String은 참조형인데 new를 통한 객체 생성이 아닌 리터럴을 이용하는걸까? public class StringTest { @Test void equalsTest1() { String str1 = new String("abc"); String str2 = "abc"; // 테스트 실패! assertTrue(str1 == str2); } @Test void equalsTest2() ..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 의존(dependency)이란? 클래스 혹은 라이브러리 등과 같이 다른 요소에 의존하여 작동하거나 사용되는 것 public class SpellChecker { private static final Lexicon dictionary = Lexicon.INSTANCE; ... public static boolean isValid(String word) { return dictionary.isContainsWord(word); } } 위 코드와 같이 SpellChecker 클래스는 Lexicon 이라는 클래스에 의존해 사용하고 있는 것을 볼 수 있다. 이처럼 현재 클래스..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 싱글톤이란? 싱글톤(singleton)이란, 인스턴스를 오직 하나만 생성할 수 있는 클래스이다. 싱글톤의 전형적인 예로는 함수와 같은 무상태 객체나 설계상 유일해야하는 시스템 컴포넌트를 들 수 있다. 무상태 객체란? 우선 상태가 있는(stateful) 클래스가 무엇인지부터 알아보는 것이 좋을 것 같다! /** * 사용자의 주문을 저장하는 클래스 * */ public class Order { private String nickname; private int price; public Order(String nickname, int price) { this.nickname..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 매개변수(parameter)란? 함수의 정의에서 전달받은 인자를 함수 내부로 전달하기 위해 사용하는 변수 public class TestCode { // int a, int b : 매개변수 static int sum(int a, int b) { return a + b; } public static void main(String[] args) { // 1, 2 : 인자 int sum = sum(1, 2); } } 왜 빌더를 고려할까? 아래 패턴들을 통해 빌더 패턴을 사용하는 이유에 대해 알아보자! 점층적 생성자 패턴 생성자의 선택 매개변수를 점층적으로 늘려나가 최종적으..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 정적 팩터리 메서드 정적(static)이란 뭘까? Java를 처음 공부하면서 느낀 것은 main() 함수가 정말 길다는 것이다. public class TestClass { public static void main(String[] args) { } } Java를 공부하기 전에 C, C++을 공부했지만, static이라는 키워드를 처음봐서 생소했다. 간단하게 아래 코드를 통해 우리가 흔히 사용하는 기능 중에 static이 있는지 확인해보자. public class TestClass { @Test @DisplayName("1) 문자열을 정수형으로 변환") void pa..