제네릭(Generic)

 - 클래스 내부의 데이터 타입을 외부에서 지정하는 기법

 - 인스턴스화 할 때 다룰 데이터 타입을 확정

 

 왜?

 - 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거

 - 타입을 엄격하게 제한, 타입의 안전성

 - 형변환 작업이 불필요하여 코드가 간결

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package generic;
 
import java.util.ArrayList;
import java.util.List;
 
public class Call {
 
    public static void main(String[] args) {
        
        /**********************************************
         * <참조타입>
         * 선언된 참조타입으로 해당 참조타입 대입가능
         **********************************************/
        List<String> s = new ArrayList<String>();
        
        /**********************************************
         * <?> //와일드 카드
         * 아무 참조타입 대입 가능
         **********************************************/
        List<?> s2 = null;
        s2 = new ArrayList<Integer>();
        s2 = new ArrayList<String>();
}
 

 

 

 제네릭 타입

 - 타입을 파라미터로 가지는 클래스와 인터페이스.

 - 클래스 또는 인터페이스 이름 뒤에 <>가 붙고 사이에 파라미터가 위치한다.

 

 

 GenericInterface.java

1
2
3
4
5
6
7
package generic;
 
public interface GenericInterface <T> {
    public T get(int i);
    public void add(T object);
}
 

 

 GenericSample.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package generic;
 
import java.util.ArrayList;
import java.util.List;
 
public class GenericSample <T> implements GenericInterface <T> {
    
    private List<T> list;
    
    @Override
    public T get(int i) {
        if(list != null) {
            return list.get(i);
        }else {            
            return null;
        }
    }
 
    @Override
    public void add(T object) {
        if(list == nullthis.list = new ArrayList<T>();
        this.list.add(object);
    }
 
}
 

 

+ Recent posts