본문 바로가기

Java10

[이펙티브 자바 : 2장] 모든 객체의 공통 메소드 Object는 객체를 만들 수 있는 구체 클래스지만 기본적으로는 상속해서 사용하도록 설계되었다. Object에서 final이 아닌 메소드 (equals, hashCode, toString, clone, finalize)는 모두 재정의(오버라이딩)를 염두에 두고 설계된 것이라 재정의 시 지켜야 하는 일반 규약이 명확히 정의되어 있다. 그래서 Object를 상속하는 클래스, 즉 모든 클래스는 이 메소드들을 일반 규약에 맞게 재정의 해야 한다. 메소드를 잘못 구현하면 대상 클래스가 이 규약을 준수한다고 가정하는 클래스(HashMap과 HashSet 등)를 오동작 하게 만들 수 있다. [아이템 10] equals는 일반 규약을 지켜 재정의하라 equals 재정의가 필요치 않는 경우 하나. 각 인스턴스가 본질적으.. 2020. 6. 27.
[이펙티브 자바 : 1장] 객체 생성과 파괴 [아이템 1] 생성자 대신 정적 팩토리 메서드를 고려하라 public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; } 장점 하나 : 이름을 가질 수 있다. 생성자에 제공하는 인자가 반환하는 객체를 잘 설명하지 못할 경우에, 잘 만든 이름을 가진 정적 팩토리를 사용하는 것이 사용하기보다 더 쉽고 읽기 좋다. 그 예로 BigInteger(int, int, Random)과 BigInteger.probablePrime을 들고 있다. 또한, 생성자는 시그니처에 제약이 있다. 똑같은 타입을 파라미터로 받는 생성자 두 개를 만들 수 없으니까 그런 경우에도 정적 팩토리 메서드를 사용하는 것이 유리하다. // 생성자를 사용하는 경.. 2020. 6. 27.