标签:
因为泛型的擦除(erasure),任何在运行时需要知道确切类型信息的操作都将无法工作。
public class Erased<T> { private final int SIZE = 100; public static void f(Object arg){ if (arg instanceof T){} // error T var = new T(); // error T[] array = new T[SIZE]; // error T[] array = (T[])new Object[SIZE]; // unchecked warning }
请看上述代码,"arg instanceof T",编译器会认为写这段程序的人是想检查arg是否为某一个类。但是erasure导致这个人的愿望落空,所以就把这段语句置为error。
标签:
原文地址:http://my.oschina.net/u/2291753/blog/464044