<T>
이 아직 결정 되지 않음<T>
{ …. }<T>
{ }Gen<String> gen = new Gen<String>();
Gen<Integer> gen2 = new Gen<Integer>();
<> : 기본 데이터 타입은 올 수 없음
<int>
: X<Integer>
: Wrapper 클래스 사용List list = new ArrayList();
list.add(“hello”);
String str = (String) list.get(0);
Object -> String 강제 타입 변환
List<String> list = new ArrayList<String>();
list.add(“hello”);
String str = list.get(0);
강제 타입 변환 불필요
E : Element
T : Type
V : Value
K : Key
<T>
<T>
class …<K, V, …> { … }
interface .. <K, V, …> { …}
자바 7 버전 이상부터 다이아몬드 연산자를 사용해 간단히 작성하고 사용 가능
<T>
가 결정나면 Box<T>
와 매개변수 (T t)가 결정(1) 명시적으로 구체적 타입 지정
Box<Integer> box = <Integer>boxing(100);
(2) 구체적 타입 생략. 매개값을 보고 구체적 타입을 추정 (더 많이 사용)
Box<Integer> box = boxing(100);
제네릭 타입을 부모 클래스로 사용할 경우
public class ChildProduct<T,M> extends Product<T,M< {...}
public class ChildProduct<T,M,C> extends Product<T,M< {...}
public class StoageImpl<T> implements Storage<T> {...}