package com.brianway.learning.java.base.generics;
import java.util.HashMap;
import java.util.Map;
/**
* 擦除的补偿
* 显式传递类型的 Class 对象
*/
public class ClassTypeCapture<T> {
//类型标签
Class<T> kind;
Map<String, Class<?>> types = new HashMap<>();
public ClassTypeCapture(Class<T> kind) {
this.kind = kind;
}
public boolean f(Object arg) {
return kind.isInstance(arg);
}
public static void main(String[] args) {
ClassTypeCapture<Building> ctt1 =
new ClassTypeCapture<Building>(Building.class);
System.out.println(ctt1.f(new Building()));
System.out.println(ctt1.f(new House()));
ClassTypeCapture<House> ctt2 =
new ClassTypeCapture<House>(House.class);
System.out.println(ctt2.f(new Building()));
System.out.println(ctt2.f(new House()));
}
}
class Building {
}
class House extends Building {
}
/* Output:
true
true
false
true
*///:~