반응형
제네릭의 필요성
아래와 같이 제네릭을 사용하면 단 하나의 CordJg클래스만으로 모든 타입의 데이터를 저장할 수 있는 인스턴스를 만들 수 있다.
class CordJg<T> {
private T code;
public CordJg(T code) {
this.code = code;
}
public T getCode() {
return code;
}
public void setCode(T code) {
this.code = code;
}
}
위의 CordJg클래스는 다음과 같이 인스턴스화할 수 있다.
CordJg<String> cordJg1 = new CordJg<String>("고양이");
제네릭 클래스를 정의할 때 주의할 점
class CordJg<T> {
private T code1; // 가능
static T code2; // 불가능
}
클래스 변수는 모든 인스턴스가 공유하는 변수인데, 만약 클래스 변수에 타입 매개변수를 사용할 수 있다면 클래스 변수의 타입이 인스턴스 별로 달라지게 되고 이는, 클래스 변수를 통해 같은 변수를 공유하는 것이 아니게 된다. 따라서 static이 붙은 변수 또는 메서드에는 타입 매개변수를 사용할 수 없다.
더 간단한 작성요령
위의 코드에서 new CordJg<…>은 참조변수의 타입으로부터 유추할 수 있기 때문에 아래와 같이 구체적인 타입을 생략하고 작성해도 된다.
CordJg<String> code1 = new CordJg<>("고양이");
CordJg<Integer> code2 = new CordJg<>(3000);
CordJg<Double> code2 = new CordJg<>(10.19);
반응형
'Java > Simple code' 카테고리의 다른 글
Java 숫자 반올림, 올림, 내림(Math)+ 소수점 n번째 자리에서 반올림 (0) | 2023.01.23 |
---|---|
Java 제네릭(Generic) 메서드 (0) | 2023.01.23 |
Java Stream collect() (0) | 2023.01.23 |
Java list to stream, set to stream (0) | 2023.01.23 |
Java IntStream 생성( Array to IntStream) (0) | 2023.01.23 |