Home
Younghwani
Cancel

[Effective Java] Item41. 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라!

Item41. 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라! 마커 인터페이스 아무 메서드도 담고 있지 않는다. 단지 자신을 구현하는 클래스가 특정 속성을 가짐을 표시해주는 인터페이스다. 예로 Serializable이 있다. 자신을 구현한 클래스의 인스턴스는 ObjectOutputStream을 통해 write...

[Effective Java] Item40. @Override 애너테이션을 일관되게 사용하라!

Item40. @Override 애너테이션을 일관되게 사용하라! @Override 자바가 기본 제공하는 애너테이션 중 가장 중요도 높음. 메서드 선언에만 달 수 있으며, @Override가 달렸다는 것은 상위 타입 메서드를 재정의했음을 뜻한다. @Override를 일관되게 사용하면 여러 가지 악명 높은 버그들을 예방해준다. Non ...

[Effective Java] Item39. 명명 패턴보다 애너테이션을 사용하라!

Item39. 명명 패턴보다 애너테이션을 사용하라! 명명패턴 전통적으로 도구나 프레임워크가 특별히 다뤄야 할 프로그램 요소에는 딱 구분되는 명명 패턴을 적용해왔다. 명명패턴의 단점 오타가 나면 안된다. JUnit3 버전까지 테스트 메서드를 test로 시작하게끔 명명했는데, 실수로 test를 잘못 적으면 테스트를 ...

[Effective Java] Item38. 확장할 수 있는 열거타입이 필요하면 인터페이스를 사용하라!

Item38. 확장할 수 있는 열거타입이 필요하면 인터페이스를 사용하라! 타입 안전 열거 패턴과 열거 타입 비교 열거 타입은 거의 모든 상황에서 타입 안전 열거 패턴보다 우수하다. 예외 : 타입 안전 열거 패턴은 확장이 가능하나, 열거 타입은 확장이 불가하다. 즉, 열거 타입은 열거한 값들...

[Effective Java] Item37. ordinal 인덱싱 대신 EnumMap을 사용하라!

Item37. ordinal 인덱싱 대신 EnumMap을 사용하라! ordinal()의 사용과 EnumMap 배열이나 리스트에서 원소를 꺼낼 때 ordinal 메서드로 인덱스을 얻어 사용하는 코드가 있다. public class Plant { enum LifeCycle { ANNUAL, PERENNIAL,BIENNIAL } ...

[Effective Java] Item36. 비트 필드 대신 EnumSet을 사용하라!

Item36. 비트 필드 대신 EnumSet을 사용하라! 비트 필드 열거한 값들이 주로 집합으로 사용될 경우, 예전에는 각 상수에 서로 다른 2의 거틉제곱 값을 할당한 정수 열거 패턴을 사용했다. public class Text { public static final int BOLD = 1 << 0; // 첫 번째 비트 ...

[Effective Java] Item35. ordinal 메서드 대신 인스턴스 필드를 사용하라!

Item35. ordinal 메서드 대신 인스턴스 필드를 사용하라! 대부분의 열거 타입 상수는 자연스레 하나의 정수값에 대응된다. 모든 열거 타입은 해당 상수가 그 열거 타입의 몇 번째인지 반환하는 ordinal이라는 메서드를 제공한다. 열거 타입 상수와 연결된 정수값이 필요한 경우 ordinal 메서드를 ...