Programming/Java
Generic Class (Basic)
사랑우주인
2022. 2. 22. 11:21
제네릭이란?
데이터 타입을 컴파일 시 결정
제네릭 클래스
- 인스턴스 생성 시 자료형 결정
- 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에 속한 메소드를 호출 가능
하나의 클래스와 하나의 인터페이스에 대해 동시 제한
