확장 가능한 enum을 만들어야 한다면 인터페이스를 이용하라

enum 자료형은 형 안전 enum 패턴보다 거의 모든 면에서 월등하다. 그러나 형 안전 enum 패턴은 계승을 통한 확장이 가능했단 반면 enum 자료형은 그 렇지 않다. 다시 말해서 형 안전 enum 패턴을 쓸 경우에는 다른 열거 자료형을 계승해서 새로운 열거 자료형을 만드는 것이 가능하지만 enum 자료형으로는 그럴 수 없다는 이야기다. 그러나 이것을 단점이라 볼 수 는 없는데 enum 자료형을 계승한다는 것을 대체로 바람직하지 않기 때문. 확장된 자료형의 상수들이 기본 자료형의 상수가.. Read More

객체화된 기본 자료형 대신 기본 자료형을 이용하라

오랜만에 이펙티브자바! 자바의 자료형 시스템은 두부분으로 나뉜다. 하나는 int, double, boolean 등의 기본 자료형, 다른 하나는 String과 List 등의 참조 자료형이다. 모든 자료형에는 대응되는 참조 자료형이 있는데 이를 객체화된 기본 자료형(boxed primitive type)이라 부른다. int, double, boolean의 객체화된 기본 자료형은 각각 Integer, Double, Boolean이다. 자바 1.5부터 자동 객체화(autoboxing)와 자동 비객체화(auto-unboxing)가 언어의 일부가 되었다. 그 둘사이에는 실직적인 차이가 있으므로 둘 가운데 무엇을 사용하고 있는지를 아는 것이 중요하며, 어떤 것을 사용할지 신중하게.. Read More

java CGLIB AOP (2)

예전에 한번 java proxy 기능으로 AOP를 포스팅 한적이 있다. 요기 원래 cglib는 따로 있던 건데 Spring이 가져왔나부다. Spring프로젝트에 포함되어 있다. 우리는 java Proxy로 AOP를 만들 때 단점이 한개 있었다. 그 단점은 바로 인터페이스를 만들어야 하는 이유이다. class TwiceImpl implements Twice { @Override public int twice(int x) { return x * 2; } } interface Twice { int twice(int x); } 우리는 예전에 이런 코드를 작성 할때 인터페이스를 만들었어야 했다. 그래야지만.. Read More