제네릭이란?
데이터 타입을 컴파일 시 결정
제네릭 클래스
- 인스턴스 생성 시 자료형 결정
- compiler가 알 수 있게, T로 구분!
제네릭 이전의 코드
프로그래머의 실수 발견
1. 컴파일 오류
2. 예외 발생
제네릭 이전의 코드는 프로그래머의 실수를 컴파일 오류, 예외로 발견하기 어렵다.
제네릭 클래스
class Box<T> {
private T ob;
public void set(T o){
ob= o;
}
public T get(){
return ob;
}
}
제네릭의 구성
1. Type Parameter(타입 매개변수)
: Box<T>에서 T
2. Type Argument(타입 인자)
: Box<Apple>에서 Apple
3. Parameterized Type(매개변수화 타입)
Box<Apple>
프로그래머의 실수가 컴파일 오류에서 발견된다(제네릭 이전의 코드는 컴파일 오류로 실수 발견 X)
제네릭 클래스의 타입 인자 제한
class Box<T extends Number>{
...
}
인스턴스 생성 시 타입 인자를 Number 또는 Number을 상속하는 클래스만 허용
타입 인자 제한의 효과
class Box<T extends Number>{
private ob;
...
public int toIntValue(){
return ob.intValue();
}
}
class Box2<T>{
private ob;
...
public int toIntValue(){
return ob.intValue();
}
}
1. 프로그래머의 실수를 컴파일 시 확인 가능하다. ex)String
2. 타입 인자를 Number 상속 클래스로 제한-> Number에 속한 메소드를 호출 가능
하나의 클래스와 하나의 인터페이스에 대해 동시 제한
'Programming > Java' 카테고리의 다른 글
Wildcard <?> (0) | 2022.02.22 |
---|---|
Generic Method (Basic) (0) | 2022.02.22 |
Collection (0) | 2022.02.11 |
원시(Primitive) 타입과 참조(Reference) 타입 (0) | 2022.02.11 |
Default Method in Interface (0) | 2021.11.22 |