본문 바로가기
[Effective Java] 오버로딩(overloading)을 분별력 있게 사용하자. [Effective Java] 오버로딩(overloading)을 분별력 있게 사용하자. public class CollectionClassifier{public static String classify(Set s){return "Set";} public static String classify(List lst){return "List";} public static String classify(Collection c){return "Unknown Collection";} public static void main(String[] args){Collection[] collections = { new HashSet(), new ArrayList(), new HashMap().values() };for( Col.. 2017. 1. 16.
[Effective Java] 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. - static 팩토리 메소드와 생성자는 공통적 제약이 있다. 선택가능한 매개변수가 많아질 경우 신축성 있게 처리하지 못한다. - 텔레스코핑 생성자(telescoping constructor) 패턴이 대안이 될 수 있으나, 마찬가지로 매개변수 수가 증가하면 무척 번거로워 진다. 가독성도 떨어지고, 유지보수도 어려워진다. ( 갯수를 세고 의미를 파악하는데만도 한세월~ ) - 자바빈즈(Java Beans) 패턴이 두번째 대안이 될 수 있으나, 이 패턴은 심각한 단점을 가지고 있다. 여러 번의 메소드 호출로 나누어져 인스턴스가 완성되기 때문에 객체가 일관된 상태를 유지하지 못할 수 있다. ( multi thread 환경 ) 또한 자바빈즈는 불변 .. 2015. 2. 8.
[Java] Variable Argument 가변인자!? 자바, 가변인자 ( Variable Argument ) 이전부터 알고 있었지만, 기억나지 않고 딱히 쓸 일이 없어서 자주 잊어먹는 가변인자. 이 녀석은 용어도 조금 생소하다. 이 녀석은 영어로 하면 Variable Argument. 즉 argument 가 가변적이라는 이야기인데.. 다시 이야기하면, 인자가 몇개가 될지 확실치 않을 때 확장성 있게 정해진 갯수가 아닌, caller 쪽에서 정하는 갯수의 argument 를 갯수 상관없이 마음껏 받을 수 있다는 이야기. 이 녀석은 잘만 쓰면 정말 유용하게 쓰일 수도 있기는 하다. 기본 syntax 만 정리하고 넘어가자. public void printSth ( String ... printTarget ){ for( int i=0; i < printTarget.. 2013. 9. 19.
반응형