// 아래에서 타압 파라미터는 T가 된다
public class clazz<T> { ... }
public interface interfaze<T> { ... }
public class Box<T>{
private T t;
public T get() { return t; }
public void set(T t) { this.t = t; }
}
public class BoxExample{
Box<String> sBox = new Box<>();
sBox.set("String");
Box<Integer> iBox = new Box<>();
iBox.set(123);
}
● E Element
● K Key
● N Number
● T Type
● V Value
public class Box<T, M>{
private T kind;
private M model;
public T getKind() { return this.kind; }
public M getModel { return this.model; }
public void set(T kind) { this.kind = kind; }
public void set(M model) { this.model = model; }
}
public class BoxExample{
Box<Tv, String> tvBox = new Box<>();
tvBox.setKind(new Tv());
tvBox.setModel("LG");
Tv tv = tvBox.getKind();
Box<Car, String> carBox = new Box<>();
carBox.setKind(new Car());
carBox.setModel("Tesla");
Car car = carBox.gerKind();
}
public <타입 파라미터> 리턴 타입 메소드명(매개변수 ....){ ... }
public <T> Box<T> boxing(T t) { ... }
public class Util {
public static <T> Box<T> boxing(T t) {
Box<T> box = new Box<T>();
box.set(t);
return box;
}
}
public class Exmaple{
Box<Integer> iBox = Util.boxing(100);
Box<String> sBox = Util.boxing("str");
}
Class Util {
public static <T extends Number> int compare(T t1, T t2) {
double v1 = t1.doubleValue();
double v2 = t2.doubleValue();
return Double.compare(v1, v2);
}
}