[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)); // 컴파일 오류!
}
}
'Programming > java' 카테고리의 다른 글
[Java] (2) 예외처리 - 1. throw throwable 2. Error 예외와 Exception 예외 비교 (0) | 2017.05.17 |
---|---|
[Java] 자바 (1) 예외처리 - 조건문 사용과 그 문제점 (0) | 2017.05.17 |
[Java] 컬렉션 - [Map] HashMap(java.util.HashMap) (2) | 2017.05.16 |
[Java] 컬렉션 클래스 - [Set] HashSet (java.util.Hashset) (0) | 2017.05.16 |
[Java] 캡슐화(encapsulation), 접근 제어자(private, default, protected, public) (0) | 2017.05.15 |