网上关于擦拭法的解释不多
这里用个例子来讲解
泛型类
public class MyUtils<T> { private T type_variable; MyUtils() throws Exception{ Type t = getClass().getDeclaredField("type_variable").getGenericType(); Log.i("xbh", t.toString()); } }
调用处
MyUtils<String> m = new MyUtils<String>();
理论上是输出String,可是就是由于擦拭法的原因,输出是T
所以擦拭法是泛型在运行的时候,不会暴露出真是类型,可以说是被拭去了
原因呢?java语法中认可泛型的,但是虚拟机不认可,所以如果你想获取真实类型的话,必须在编译的时候就要指定了。