Daily coding

Java Basic : day 10 - 제네릭 Generic 본문

Language/Java_basic

Java Basic : day 10 - 제네릭 Generic

sunnnkim 2019. 11. 29. 18:13

Generic

 
  - C++ : template 템플릿과 같음
  - 자료형의 변수
  - 목적 : 클래스의 멤버변수를 하나의 자료형이 아닌 여러 자료형으로 만들기 위해서 사용한다
  - template 자리에는 반드시 클래스만 넣을 수 있고, 기본 자료형은 래퍼클래스를 입력해야한다.


Box<Integer> a = new Box<Integer>(32);
Box<String> b = new Box<String>("String");
Box c = new Box('c');


System.out.println("자료형 1개 : "+a.getTemp());
System.out.println("자료형 1개 : "+b.getTemp());
System.out.println("자료형 1개 : "+c.getTemp());


BoxMap <Integer, String> boxMap1 = new BoxMap <Integer, String> (30, "Sting");
BoxMap boxMap2 = new BoxMap(40, "Sting2");

System.out.println("자료형 2개 : "+boxMap1.getKey()+" " + boxMap1.getValue());
System.out.println("자료형 2개 : "+boxMap2.getKey()+" " + boxMap2.getValue());


}

}

// 제네릭 <> 1개
class Box{

          T temp;

          // T에는 자료형을 클래스명으로 입력해야한다.

          public Box(T temp) {
                    this.temp = temp;
          }


          //getter 
          public T getTemp() {
                    return temp;
          }

          //setter
          public void setTemp(T temp) {
                    this.temp = temp;
          }
}

//제네릭 자료형 2개
class BoxMap<T,U> {
          T key;
          U value;


          public BoxMap(T key, U value) {
                    this.key = key;
                    this.value = value;
          }


          public T getKey() {
                    return key;
          }

          public void setKey(T key) {
                    this.key = key;
          }

          public U getValue() {
                    return value;
          }

          public void setValue(U value) {
                    this.value = value;
          }


}