본문 바로가기
[Effective Java] 제네릭 메소드를 애용하자. [Effective Java] 제네릭 메소드를 애용하자. - 클래스를 제네릭화 하듯 메소드 또한 제네릭화 하면 좋다. 특히 static 유틸리티 메소드가 제네릭화의 좋은 후보이다. 제네릭 메소드는 제네릭 타입과 유사한 방법으로 작성한다. - 타입 매개변수를 메소드 선언부에 추가한 후 그 타입 매개변수를 메소드 내부에서 사용하면 된다. 타입 매개변수를 선언하는 타입 매개변수 목록은 return 타입 앞에 둔다. - 바운드 와일드 카드 타입 ( bounded wildcard types ) 를 사용하면 그 메소드를 더 유연하게 만들 수 있다. - 제네릭 메소드는 제네릭 생성자를 호출할 때 반드시 지정해야 하는 타입 매개변수 값을 명시적으로 지정할 필요가 없다. 컴파일러가 메소드 인자의 타입을 조사하여 타입 매.. 2016. 12. 1.
[Effective Java] 타입 안전이 보장되는 혼성(heterogeneous) 컨테이너의 사용을 고려하자. [Effective Java] 타입 안전이 보장되는 혼성(heterogeneous) 컨테이너의 사용을 고려하자. - 제네릭은 Set 이나 Map 같은 컬렉션, ThreadLocal 이나 AtomicReference 같은 단일 요소(single-element) 저장 컨테이너에 가장 많이 사용된다. 이 컬렉션들은 컨테이너를 매개변수화 한 것이다. 컨테이너의 특성에 따라 사용 가능한 타입 매개변수의 갯수가 자연스럽게 제한된다. - 타입 안전을 지키면서 더 큰 유연성을 갖기 위해서 ( 예를 들면 nosql 처럼 column 이 상황에 따라 다른 경우 )는 컨테이너 대신 키(key) 를 매개변수화 해주면 된다. - Class 클래스는 1.5부터 제네릭화되었다. 클래스 리터럴 타입은 Class 가 아니고 Class.. 2016. 11. 22.
[Effective Java] 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. [Effective Java] 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. - 하나 이상의 타입 매개변수(type parameter)를 선언하고 있는 클래스나 인터페이스를 제네릭 클래스 또는 제네릭 인터페이스라고 한다. 제네릭 클래스와 인터페이스를 합해서 제네릭 타입이라고 부른다. 각 제네릭 타입에서는 매개변수화 타입(parameterized type)들을 정의한다. ( 이용 ) 실 타입 매개변수(actual type parameter)들은 제네릭 타입의 형식 타입 매개변수(formal type parameter)와 각각 대응된다. ( List 에서 String 이 실 타입 매개변수이고, 기존 T 혹은 E 가 타입 매개변수이다. ) - 각 제네릭 타입에서는 원천(raw)타입을 정의하는데.. 2016. 11. 21.
[iOS Study] Objective-C [iOS Study] Objective-C 출처 : 아론 힐리가스의 iOS 프로그래밍 -iOS 앱은 코코아 터치(Cocoa Touch) 프레임워크를 사용하여 Objective-C 언어로 작성된다.Objective-C 는 C 언어의 확장이며 코코아 터치 프레임워크는 Objective-C 클래스의 모음이다. - 일반적으로 Objective-C 에서는 인스턴스 변수명을 밑줄(_) 로 시작한다. - 객체를 만들기 위해서는 클래스에 alloc 메세지를 보낸다. 이에 클래스는 메모리(힙)에 객체를 만들고 변수에 저장된 그 객체의 주소를 준다. -Party* partyInstance = [Party alloc];[partyInstance init]; 새로 할당한 인스턴스에 보내는 첫 메시지는 항상 초기화 메시지다. .. 2016. 2. 13.
[Effective Java] 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. - static 팩토리 메소드와 생성자는 공통적 제약이 있다. 선택가능한 매개변수가 많아질 경우 신축성 있게 처리하지 못한다. - 텔레스코핑 생성자(telescoping constructor) 패턴이 대안이 될 수 있으나, 마찬가지로 매개변수 수가 증가하면 무척 번거로워 진다. 가독성도 떨어지고, 유지보수도 어려워진다. ( 갯수를 세고 의미를 파악하는데만도 한세월~ ) - 자바빈즈(Java Beans) 패턴이 두번째 대안이 될 수 있으나, 이 패턴은 심각한 단점을 가지고 있다. 여러 번의 메소드 호출로 나누어져 인스턴스가 완성되기 때문에 객체가 일관된 상태를 유지하지 못할 수 있다. ( multi thread 환경 ) 또한 자바빈즈는 불변 .. 2015. 2. 8.
반응형