Home
Younghwani
Cancel

[Effective Java] Item14. Comparable을 구현할지 고려하라!

Item14. Comparable을 구현할지 고려하라! Comparable 인터페이스의 유일무이한 메서드 -> compareTo compareTo는 단순 동치성 비교에 더해 순서까지 비교할 수 있으며 제네릭하다. Comparable을 구현했다는 것은 그 클래스의 인스턴스들에는 자연적인 순서(na...

[Effective Java] Item13. clone 재정의는 주의해서 진행하라!

Item13. clone 재정의는 주의해서 진행하라! Cloneable은 복제해도 되는 클래스임을 명시하는 용도의 mixin interface지만, 아쉽게도 의도한 목적을 제대로 이루지 못했다. 이유? 가장 큰 문제는 clone 메서드의 선언 위치다. clone 메서드가 선언된 곳이 Cloneable이 아닌 Object이고, 그마저...

[Effective Java] Item12. toString을 항상 재정의하라!

Item12. toString을 항상 재정의하라! Object의 기본 toString 메서드는 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 기본 toString 메서드는 클래스_이름@16진수해시코드를 반환할 뿐이다. toString 메서드의 일반 규약에 따르면 간결하면서 읽기 쉬운 형태의 유익한 정보를 반환해야 한...

[Effective Java] Item11. equals를 재정의하려거든 hashCode도 재정의하라!

Item11. equals를 재정의하려거든 hashCode도 재정의하라! equals를 재정의한 클래스 모두에서 hashCode도 재정의해야 한다. 그렇지 않으면 hashCode 일반 규약을 어기게 되어 HashMap, HashSet과 같은 컬렉션의 원소 사용 시 문제가 발생한다. HashCode 관련 일반 규약 equals 비교...

[Effective Java] Item10. equals는 일반 규약을 지켜 재정의하라!

Item10. equals는 일반 규약을 지켜 재정의하라! equals 메서드 재정의 시 함정에 빠져 문제를 초래할 수 있다. 문제 회피의 가장 쉬운 길 -> 아예 재정의 하지 않기. equals를 재정의 하지 않는 것이 최선인 경우 각 인스턴스가 본질적으로 고유한 경우 값을 표현하는 것이 아니...

[Effective Java] Item09. try-finally 보다는 try-with-resources를 사용하라!

Item09. try-finally 보다는 try-with-resources를 사용하라! 자바 라이브러리에는 close 메서드를 호출해 직접 닫아줘야 하는 자원이 많다. InputStream, OutputStream, java.sql.Connection 등이 좋은 예이다. 자원 중 상당수가 안전망으로 finalizer를 사용하고 있으나 ...

[Effective Java] Item08. finalizer와 cleaner 사용을 피하라!

Item08. finalizer와 cleaner 사용을 피하라! 자바는 기본적으로 두 가지 객체 소멸자를 제공한다. finalizer 예측할 수 없고, 상황에 따라 위험할 수 있어 일반적으로 불필요하다. 나름 몇가지 쓰임이 있긴 하나 기본적으로 ‘쓰지 말아야’ 한다. cleaner 자바 9에...