코드 효율성
제네릭
- 장점
- 타입캐스팅에 의한 RuntimeException 방지 목적 - 제네릭 설정을 통해서 collection 타입을 설정하여 컴파일시점에서 오류코드 방지(제네릭을 설정하지 않은 collection의 경우 Object가 주입되기 때문에 collection객체에서 데이터를 추출할떄 타입이 맞지 않아 RuntimeException 이 발생한다.)
- 컴파일 레벨에서 타ㅣㅂ캐스팅 오류를 감지
- 좀더 안전한 프로그램 개발이 가능
- 단점
- 코드의 복잡석이 증가
무조건 제네릭(Generic)을 사용하도록 강제하지 않은 이유는?
과거에 작성되어진 코드들이 기존에 많이 사용되고 있기때문에 강제할 수 없다. 하지만, 앞으로 작성되어지는 코드들은 제너릭을 사용하도록 권장한다.(IDE에서 워닝 발생)
List타입과 List
컴파일 레벨에서 아직 코드가 실행되지 않았지만 문법 오류에 대해서 타입 추론을 할 수 있다.
제네릭 ?(와일드카드) 타입은 무엇인가?
모든 타입을 허용할떄 사용한다. Object 대신 사용하도록 한다.
-
<?> : 모든 타입 허용
-
<? super 특정 클래스> : 특정 클래스의 사우이 클래스만 허용
-
<? extends 특정 클래스> : 특정 클래스의 하위 클래스만 허용
public List<? extneds Map> method();
리턴 가능한 타입은? HashMap 등…
타입 매개변수
jdk에서 적용된 Collection을 Genertic으로 사용하는 것은 쉽지만 직접 만들어야할 경우 상대적으로 어렵다.
public class SampleClass<T> {
}
상황에 따라 논리적으로 타입 매개변수를 제공하고 있다.(권장)
컴파일에는 제한이 없으나 코드 규칙성에 따라 권장하고 있다.
- E : Element
- K : Key
- N : Number
- T : Type
- V : Value
@Override를 명시해야하는 이유
찾아보기~
Enum
프로그램 내부의 상수값을 정의하는 코드를 대체하는 용도로 사용되는 타입
jdk1.5에서 특수한 형태의 클래스로 추가되었다.
특징
- Object를 상속하고 있다.
- Enum은 불변객체이다. (멀티 쓰레드 환경에서 안전하게 사용할 수 있다.)
- 일종의 Class이므로 멤버변수, 상수, 메서드를 가질 수 있다.
- 생성자를 가질 수 있다.
- 멤버변수를 가질 수 있다.
- 메서드를 가질 수 있다.
댓글남기기