본문 바로가기
Programming/Java

7장. 컬렉션과 제네릭 #4 제네릭 만들어보기

by jaegom 2020. 6. 17.

제네릭 만들기

1. 제네릭을 직접 만들 수 있고 요소타입을 가변적으로 놔둘 수 있다.
ex) MyClass<T>, GStack<T>

2. 쓰일 타입매개변수는 나중에 구체화할 수 있다.

ex)
public class MyClass<T> {
T val;
void set(T a) { val = a; }
T get() { return val; }
}

MyClass<String> s = new MyClass<String>(); // 제네릭 타입 T에 String 지정
s.set("hello");
System.out.println(s.get()); // "hello" 출력

cf) 타입 매개변수로 나타내는 객체 생성(x) ex) T a = new T();

 

3. 제네릭 클래스 또는 제네릭 인터페이스의 배열은 불가능하다.

ex)

GStack<Integer>[] gs = new GStack<Integer>[10]; (x)

4. 제네릭 타입의 배열생성(객체생성)도 불가능하다.

ex)

T[] a = new T[10]; (x)

5. 배열 생성 후 실제 사용할 때 캐스팅은 가능하다.

ex)

return (T)stck[tos]; // 타입 매개 변수 T타입으로 캐스팅

6. 타입 매개변수 배열 생성은 불가능하지만 레퍼런스는 가능하다(인터페이스같이)

ex)

public void myArray(T[] a) {....} (o)

7. 제네릭 메소드 생성

댓글