흔히 클래스의 인스턴스를 얻는 방법은 public 생성자가 일반적이었음여기서 생성자와 별도로 정적 팩터리 메소드를 통해서 인스턴스를 얻을 수 있음이는 클래스의 인스턴스를 반환하는 단순한 정적 메서드임, 예시를 보면 다음과 같음위처럼 기본타입인 boolean 값을 Boo
아이템 1에서 정적 팩터리 메서드와 그리고 그냥 생성자에 대해서 다루어 보았음그리고 정적 팩터리 메서드를 사용하는 것이 생성자를 쓰는 것보다 낫다고 하였는데 여기서 둘 다 똑같은 제약이 존재함, 선택적 매개변수가 많을 때 적절히 대응하기가 어려움즉, 선택 항목의 대다수
싱글턴(singleton)이란 오직 하나만 생성할 수 있는 클래스를 말함싱글턴의 전형적인 예는 함수와 같은 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있음무상태 객체와 설계상 유일해야 하는 시스템 컴포넌트?간단하게 클래스 내부에 인
이따금 단순히 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있음이러한 것들은 인스턴스로 만들어 쓰려고 하는게 아니지만 생성자를 명시하지 않으면 컴파일러가 기본 생성자를 만듬(매개변수를 받지 않는 public 생성자가 만들어짐)이는 추상 클래스로 만드는
많은 클래스가 하나 이상의 자원에 의존함, 가령 맞춤법 검사기는 사전에 의존하는데 이런 클래스를 정적 유틸리티 클래스로 구현하는 경우가 있음이를 싱글턴으로 구현하는 경우도 흔함위의 두 방식 모두 사전을 다 하나만 사용한다고 하면 그리 훌륭한 방식은 아님사전 하나로 이
똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많음, 재사용은 빠르고 세련됨, 불변 객체는 언제든 재사용이 가능함String s = new String("bikini"); 이와 같은 방식은 실행될 때마다 인스턴스를 새로 만드는데 이런
C, C++처럼 메모리를 직접 관리해야 하는 언어와 달리 자바의 경우 가비지 컬렉터가 다 쓴 객체를 알아서 회수를 함그렇다고 메모리 관리에 더 이상 신경 쓰지 않아도 되는 것은 아님스택을 예시로 들어볼 수 있음위의 스택을 쓰는데 문제는 없음 하지만 사용하는 프로그램을
자바는 두 가지 객체 소멸자를 제공함finalizer는 예측할 수 없고, 상황에 따라 위험할 수 있어 일반적으로 불필요함, 다양한 문제의 원인이 되어서 쓰임새가 있긴 하지만 기본적으로 안 씀cleaner가 대안으로 나왔지만 finalizer보다는 덜 위험하지만, 여전히
자바 라이브러리에는 close 메서드를 호출해 직접 닫아줘야 하는 자원이 많음(InputStream, OutputStream, java.sql.Collection 등)finalizer를 사용해도 되지만 아이템 8에서 봤듯이 믿을만한 요소가 아님전통적으로는 try-fin