개발로그

Item 10 - equals는 일반 규약을 지켜 재정의하라

equals 메서드는 재정의하기 쉬워보이지만 곳곳에 함정이 도사리고 있다. 따라서 재정의가 필요하지 않은 경우에는 재정의하지 않는 것이 최선의 선택이다. equals 재정의를 추천하지 않는 상황 🙅 각 인스턴스가 본질적으로 고유한 경우 값을 표현하는게 아니라 동작하는 개체를 표현하는 클래스 일 때 ex) Thread 클래...

Item 2 - 생성자에 매개변수가 많다면 빌더를 고려하라

Item2 - 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩터리 메서드와 생성자는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다. 🤦‍♀️ 이러한 제약의 대안으로 프로그래머들은 다음과 같은 방법을 사용했다. 점층적 생성자 패턴 자바 빈즈 패턴 빌더 패턴 (1) 점층적 생성자 패턴 (확장의 어려움) public c...

Item 1 - 생성자 대신 정적 팩터리 메서드를 고려하라

정적 팩터리 메서드의 장점 👍 (1) 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으론 반환될 객체의 특성을 제대로 설명하지 못한다. 반면, 정적 팩터리 메서드는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. [생성자] : BigInteger(int, int, Random) [정적 팩터리 메서드]...

Item 90 - 직렬화된 인스턴스 대신 직렬화 프록시 사용을 검토하라

Serializable을 구현하는 순간, 생성자 이외의 방법으로 인스턴스를 생성할 수 있게 된다. 이전 아이템에서도 계속 언급되지만, 버그와 보안 문제가 일어날 가능성이 커진다. 하지만 직렬화 프록시 패턴을 사용하면 이 위험을 크게 줄일 수 있다. 직렬화 프록시 패턴 public final class Period implements Serial...