擦除的补偿

擦除丢失了在泛型代码中执行某些操作的能力,任何在运行时需要知道确切类型信息的操作都将无法进行,通过类型标签来对擦除进行补偿。

package com.cognizant.ch15;

class Building {
}

class House extends Building {
}

public class ClassTypeCapture<T> {
Class<T> kind;

public ClassTypeCapture(Class<T> kind) {
this.kind = kind;
}

public boolean f(Object obj) {
return kind.isInstance(obj);
}

public static void main(String[] args) {
ClassTypeCapture<Building> ctt = new ClassTypeCapture<Building>(
Building.class);
System.out.println(ctt.f(new House()));
System.out.println(ctt.f(new Building()));
}
}
output:

true
true

你可能感兴趣的:(擦除的补偿)