Tagged

effective java 2nd edition

A collection of 5 posts

@SuppressWarning("unchecked")

EJ2E Item 24. unchecked 경고를 제거하자

참조: Effective Java 2nd Edition. Item 24: Eliminate unchecked warnings Set<Lark> exaltation = new HashSet(); 다음과 같은 코드는 컴파일 시 unchecked 경고를 발생시킨다.  Set<Lark> exaltation = new HashSet<Lark>(); 이렇게 수정하면 경고가 사라진다. 가능한 모든 unchecked 경고를 없애자. 모든 경고를 제거했다면 코드의 타입

effective java 2nd edition

EJ2E Item 21. 전략을 표현할 때는 함수 객체를 사용하라

참조: Effective Java 2nd Edition. Item 20: Use function objects to represent strategies 자바는 함수 포인터를 제공하지 않는다. 하지만 객체 레퍼러스를 함수 객체와 비슷하게 사용할 수 있다.  메서드를 호출하면 해당 객체에 대한 기능을 수행하는 것이고 함수 객체는 다른 객체들에서 해당 기능을 수행하게 해준다. (사족. 메서드는 특정 객체에 종속적인 것이고,

effective java

EJ2E Item 20. 태그가 있는 클래스 대신 클래스 계층구조를 선호하라.

참조: Effective Java 2nd Edition. Prefer class hierarchies to tageed classes 위와 같은 클래스의 단점:– enum, switch 문, 태그 필드로 인해 지져분하다.– 여러 구현체를 하나의 클래스로 합쳐놓았기 때문에 가독성이 떨어진다.– 불필요한 필드까지 가지고 인스턴스를 만들어야 하기 떄문에 메모리 풋프린트가 증가한다.– 생성자에서 불필요한 필드까지 초기화하지 않는 이상

constant

EJ2E Item 19. 인터페이스는 오직 타입을 정의할 때만 사용하라

참조: Effective Java 2nd Edition 어떤 클래스가 인터페이스를 구현할 때 인터페이스는 해당 클래스의 인스턴스를 참조할 수 있는 타입을 제공한다. 즉 해당 클래스 인스턴스를 가지고 고객이 무엇을 할 수 있는지 알려주는 것이다. 이 경우 이외에 다른 의도로 인터페이스를 사용하는 것은 부적절하다. 상수 인터페이스(constant interface) 안티 패턴– 매서드 없이 상수를