Book/Effective_Java
-
[Effective Java] 아이템2: 생성자에 매개변수가 많다면 빌더를 고려하라Book/Effective_Java 2021. 1. 26. 10:45
아이템2 : 생성자에 매개변수가 많다면 빌더를 고려하라 앞서 보았던 정적 팩토리 메소드와 생성자에는 똑같은 제약이 하나 있습니다. 바로 선택적 매개변수가 많다면 적절히 대응하기가 어렵다는 것입니다. 예를들어, 식품 포장의 영양정보를 표현하는 클래스에 1회 내용량, 총 n회 제공량, 1회 제공량당 칼로리와 같은 필수 항목과 총 지방, 트랜스지방, 포화지방. . . . 등 총 20개가 넘는 선택항목이 있다고 생각해보겠습니다. 이러한 클래스를 생성자 or 정적 팩토리를 사용한다면 어떻게 할 수 있을까요? 하나씩 알아보겠습니다. 대안A) 점층적 생성자 패턴(telescoping constructor pattern)을 사용해보겠습니다. 점층적 생성자 패턴이란 쉽게 말하면 매게변수가 2개인, 3개인, 4개인 . ...
-
[Effective Java] 아이템1: 생성자 대신 정적 팩토리 메소드를 고려하라Book/Effective_Java 2021. 1. 26. 00:25
아이템1: 생성자 대신 정적 팩토리 메소드를 고려하라 클래스의 인스턴스를 얻는 전통적인 방법은 public 생성자를 이용하는 것입니다. public class Test { private String name; public Test(String name) { this.name = name; } public static void main(String[] args) { Test test = new Test("Gyunny"); } } 위의 코드를 보면 Test 클래스의 생성자를 이용해서 객체를 생성한 것을 볼 수 있는데 이것이 public 생성자를 이용해서 객체를 만든 예입니다. 그렇지만 객체를 만들 때 프로그래머는 생성자의 매개변수만을 보고 어떤 객체가 반환될 것인지 예측하기가 쉽지 않습니다. 그래서 이러한 ..
-
[Effective Java] 아이템11: equals를 재정의하려거든 hashCode()도 재정의하라Book/Effective_Java 2021. 1. 25. 18:58
아이템 11: equals를 재정의하려거든 hashCode도 재정의하라 equals를 재정의한 클래스 모두에서 hashCode도 재정의해야 한다라고 합니다. 그렇지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 HashMap이나 HashSet과 같은 컬렉션의 원소로 사용할 때 문제를 일으킨다고 합니다. 다음은 Object 명세에서 발췌한 규약입니다 equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메소드는 몇 번을 호출해도 일관되게 항상 같은 값을 반환해야 합니다. 단, 애플리케이션을 다시 실행한다면 이 값이 달라져도 상관없습니다. equals(Object)가 두 객체를 같다고 판단했다면, 두 객체의 hashCode는..