Java 5부터 가능

클래스명<실제 제네릭 타입> 참조 변수명 = new 클래스명<실제 제네릭 타입>();

Java 7부터 가능

클래스명<실제 제네릭 타입> 참조 변수명 = new 클래스명<>();
제네릭 타입 변수 의미
T 타입(Type)
K 키(Key)
V 값(Value)
N 숫자(Number)
E 원소(Element)

제네릭 클래스

class MyClass<T> {
	private T t;
	... // getter/setter
}

MyClass<String> mc1 = new MyClass<>(); // Primitive 타입은 사용 안됨
mc1.setT("안녕");

제네릭 메서드

class GenericMethods {
	public <T> T method1(T t) {
		return t;   // Object 타입만 사용 가능
	}
}

GenericMethods gm = new GenericMethods();
String str1 = gm.<String>method1("안녕");
String str1 = gm.method1("안녕");   // 보통 이렇게 씀

제네릭 클래스의 타입 제한

class Good<T extends Fruit> {
	private T t;
	...
}

Goods<Apple> goods = new Goods<>();
public <T extends Number> void method1(T t) {
	System.out.println(t.intValue());  // Object 메서드만 사용 가능하지만 여기서는 Number 클래스를 상속받았기 때문에 가능
}