Home
Younghwani
Cancel

[Effective Java] Item28. 배열보다는 리스트를 사용하라!

Item28. 배열보다는 리스트를 사용하라! 배열과 제네릭 타입의 차이 1. 공변 / 불공변 배열은 공변(covariant)이다. Sub가 Super의 하위 타입이라면 Sub[]도 Super[]의 하위 타입이 된다. 제네릭 타입은 불공변(invariant)이다. Type1, Type2...

[Effective Java] Item27. 비검사 경고를 제거하라!

Item27. 비검사 경고를 제거하라! 제네릭을 사용하기 시작하면 수많은 컴파일러 경고를 보게 될 것이다. 비검사 형변환 경고, 비검사 메서드 호출 경고, 비검사 매개변수화 가변인수 타입 경고, 비검사 변환 경고 등 새로 작성한 코드가 한번에 깨끗하게 컴파일되리라 기대하지는 말자 대부분의 비검사 경고는 ...

[Effective Java] Item26. 로 타입은 사용하지 말라!

Item26. 로 타입은 사용하지 말라! 용어 정리 제네릭 클래스(제네릭 인터페이스) 클래스와 인터페이스 선언에 타입 매개변수가 쓰이는 경우 제네릭 클래스 혹은 인터페이스라 칭한다. 제네릭 타입 제네릭 클래스와 제네릭 인터페이스를 통틀어 제네릭 타입이라 칭한다. 매개변수화 타입 제네릭 타입은 일련의 매개변수화 타입을 정의...

[Effective Java] Item25. 톱레벨 클래스는 한 파일에 하나만 담으라!

Item25. 톱레벨 클래스는 한 파일에 하나만 담으라! 톱레벨 클래스 중첩이 아닌 단일 형태의 클래스 자바 컴파일러는 한 파일에 톱레벨 클래스가 여러 개 선언되어도 불평하지 않는다. 하지만 이러한 방법은 득이 없고, 위험을 감수해야 하는 실만 있다. // A.java class A { s...

[Effective Java] Item24. 멤버 클래스는 되도록 static으로 만들라!

Item24. 멤버 클래스는 되도록 static으로 만들라! 중첩 클래스 (Nested class) 다른 클래스 안에 정의된 클래스를 말한다. 자신을 감싼 바깥 클래스에서만 쓰여야 한다. 그 외에 쓰임이 있다면 톱레벨 클래스로 만든다. 중첩 클래스의 종류 정적 멤버 클래스 (비정적) 멤버 클...

[Effective Java] Item23. 태그 달린 클래스보다는 클래스 계층구조를 활용하라!

Item23. 태그 달린 클래스보다는 클래스 계층구조를 활용하라! 두 가지 이상의 의미를 표현할 수 있으며, 그 중 현재 표현하는 의미를 태그 값으로 알려주는 클래스에 대한 부분이다. 태그 달린 클래스 클래스 계층구조보다 훨씬 나쁘다. 태그 달린 클래스의 예 class Figure { enum Shape { RECTANGLE...

[Effective Java] Item22. 인터페이스는 타입을 정하는 용도로만 사용하라!

Item22. 인터페이스는 타입을 정하는 용도로만 사용하라! 인터페이스는 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 한다. 클래스가 인터페이스를 구현한다는 것 : 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에 얘기해주는 것 인터페이스는 위의 용도로만 사용해야 한다는 것이 지침이다....