Java/Simple code

Java_제네릭(Generic) 클래스

검은고양이개발자 2023. 1. 23. 14:29
반응형

제네릭의 필요성

아래와 같이 제네릭을 사용하면 단 하나의 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);
반응형