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에 속한 메소드를 호출 가능

 

하나의 클래스와 하나의 인터페이스에 대해 동시 제한