제네릭

개발공부기록하기·2024년 5월 1일

java

목록 보기
9/16

제네릭이락 클래스 내부에 사용할 데이터 타입을 <>를 통해서 지정이 가능하다.

// 1.제네릭은 클래스 또는 메서드에 사용 가능
//<> 안에 들어가야 할 타입을 명시에 String을 지정 하면
public class Generic<T> {
    // 2. 내부 필드에 String으로 지정
    private T t;
    // 3. method의 return type도 String이 된다.
    public T get() {
        return this.t;
    }
	//메서드 T도 String으로 지정
    public void set(T t) {
        this.t = t;
    }

    public static void main(String[] args) {
        // 4.
        Generic<String> stringGeneric = new Generic<>();
        // 5.
        stringGeneric.set("Hello World");

        String tValueTurnOutWithString = stringGeneric.get();

        System.out.println(tValueTurnOutWithString);
    }
}

제네릭은 static 맴버에 사용 할수 없습니다.

static T get() { ... } // 에러

static void set(T t) { ... } // 에러

제네릭에서 타입 매개변수를 지정할때 원시형 변수(int,double,float등)으로 지정이 되지 않고 오직 참조형 타입의 객채이다(Class,Integer,Double등)

제네릭은 타입 매개 변수를 지정 할때 한개만 사용할수 있는게 아니라 여래개의 타입 지정이 가능하다.

public class Generic<T, U, E> {
    public E multiTypeMethod(T t, U u) { ... }
}


Generic<Long, Integer, String> instance = new Generic();
instance.multiTypeMethod(longVal, intVal);

제네릭은 extends를 통해서 제한 타입을 둘수가 있다. <T extends [제한타입]> 이런 형식으로 지정을 할수 있고 예를 들어 제한 타입에 Number를 지정 하면Number와 그 하위클래스(Integer,Double)들만 받도록 타입을 제한 할수 있다.<T extends [제한타입] &[제한타입]>과 같이 다중 제한 타입을 둘수도 있다.

제네릭 메서드

제네릭 메서드란 메서드의 선언부에 <>가 선언된 메서드를 말한다.
일반적으로 제네릭클래스에서 제네릭을 받아와 타입을 설정을 할수 있지만.
제네릭 메서드는 통적으로 타입을 받아와 독립적으로 운용이 가능한 것이다.
class FruitBox<T> {
	
    // 클래스의 타입 파라미터를 받아와 사용하는 일반 메서드
    public T addBox(T x, T y) {
        // ...
    }
    
    // 독립적으로 타입 할당 운영되는 제네릭 메서드
    public static <T> T addBoxStatic(T x, T y) {
        // ...
    }
}

제네릭의 와일드 카드

<?> : 제한 없음 
<? super T> : T와 그 조상들만 가능
<? extends T> : T와 그 자손들만 사용 가능

참고 문헌 및 내용 출처 : https://inpa.tistory.com/entry/JAVA-☕-제네릭Generics-개념-문법-정복하기 [Inpa Dev 👨‍💻:티스토리]

0개의 댓글