[Java] 자바 제네릭 (Generic) 문법


제네릭 (Generic) 문법

- 제네릭을 사용하기 전엔 값을 꺼낼 때마다 일일이 본래 타입으로 형변환(캐스팅)을 해야 했다.

- 그러나 제네릭을 사용하면 값을 꺼낼 때마다 형변환을 할 필요가 없고 특정 타입의

  값만 다루도록 제한할 수 있다.


- 문법 : 

  클래스 선언부에 해당 클래스가 다룰 타입(클래스 또는 인터페이스)이 무엇인지

  타입 정보를 받을 변수를 선언한다.




제네릭을 사용하기 전 Bucket class와 호출 코드


public class Bucket {
  Object value;
 
  public void setValue(Object value) {
    this.value = value;
  }
 
  public Object getValue() {
    return value;
  }
}


Bucket b= new Bucket();

   
String str = new String("Hello");
System.out.println(str.length());
   

b.setValue(str);
// String str2 = b.getValue(); // getValue()가 리턴하는 건 Object 객체이다.
                                     // Object 객체를 String 타입에 담을 수 없기 때문에 오류!
String str2 = (String)b.getValue();

System.out.println(str2.length());






제네릭을 사용한 후 Bucket class


public class Bucket2 <T> {
  T value;
 
  public void setValue(T value) {
    this.value = value;
  }
 
  public T getValue() {
    return value;
  }
}




제네릭을 사용한 후 main() 메서드


import java.util.Date;

public class Test03 {
  public static void main(String[] args) {
    // 타입을 지정해보자!
    // Bucket2<String> b= new Bucket2<String>();
   
    // new 명령 다음에는 타입 지정을 생략할 수 있다.
    Bucket2<String> b= new Bucket2<>();

//    Bucket2<String> b= new Bucket2<Object>();
  
  b.setValue(new Date()); // 컴파일 오류!
  b.setValue(new Integer(10)); // 컴파일 오류!
   
  }
}





블로그 이미지

필로그래머

,