본문으로 바로가기

15_Generics

category HighJava 2020. 9. 17. 14:41

Generic이란 ?

클래스에 사용할 타입을 디자인(설계)시에 지정하는 것이 아니라 클래스를 사용할 때

지정한 후 사용하는 기술을 말한다.


Generic 사용시  장점

1. 컴파일시 잘못된 타입 사용을 체크하기 때문에 안전한 코딩을 할 수 있다.

2. 불필요한 타입변환을 하지 않아도 된다. ( 프로그램 성능 향상 )


제너릭 클래스를 만드는 방법


  형식)

Class 클래스명<제너릭타입글자> {

    제너릭타입글자 변수명; // 변수선언에 제너릭을 사용할 경우

     ...

     

   제너릭타입글자 메서드명(){ // 반환값이 있는 메서드에서 사용

        ...

     

       return 값;

           }

       ...

     }

     

     -- 제너릭 타입글자 --

     T => Type

     K => Key

     V => Value

     E => Element(자료구조에 들어가는 항목들을 나타날 때 사용)

     

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package kr.or.ddit.basic;
 
 
class NonGeneric {
    
    private Object val;
 
    public Object getVal() {
        return val;
    }
 
    public void setVal(Object val) {
        this.val = val;
    }
    
    
}
 
 
class MyGeneric<T>{
    
    private T val;
 
    public T getVal() {
        return val;
    }
 
    public void setVal(T val) {
        this.val = val;
    }
    
    
}
 
public class T02_GenericTest {
 
    public static void main(String[] args) {
        NonGeneric ng1 = new NonGeneric();
        ng1.setVal("가나다라");
        
        NonGeneric ng2 = new NonGeneric();
        ng2.setVal(100);
        
        String rtnNg1 = (String)ng1.getVal();
        System.out.println("문자열 반환값 rtnNg1 => " + rtnNg1);
        
        Integer irtnNg2 = (Integer)ng2.getVal();
        System.out.println("정수 반환값 irtnNg2 => " + irtnNg2);
        System.out.println();
        
        
        MyGeneric<String> mg1 = new MyGeneric<String>();
        MyGeneric<Integer> mg2 = new MyGeneric<>();
        
        mg1.setVal("우리나라");
        mg2.setVal(500);
        
        rtnNg1 = mg1.getVal();
        irtnNg2 = mg2.getVal();
        
        System.out.println("제너릭 문자열 반환값 : " + rtnNg1);
        System.out.println("제너릭 문자열 반환값 : " + irtnNg2);
        
    }
}
 
cs


'HighJava' 카테고리의 다른 글

17_Bounded Type Parameter(제한된 타입 파라미터)  (0) 2020.09.17
16_GenericsMethod  (1) 2020.09.17
14_Args_가변형 인수  (0) 2020.09.17
13_Properties  (0) 2020.09.17
12_전화번호부관리  (0) 2020.09.17