Java 中的空匿名内部类
2022-09-01 22:05:21
这样做的目的是允许查找实例的超类 - 这将保留类型参数信息。TypeToken
例如,虽然一个对象不知道它的元素类型是,由于擦除,超类信息不会丢失,所以知道它的超类是,而不仅仅是。 使用该技术来表示构造的泛型类型。ArrayList<String>
String
new ArrayList<String>{}
ArrayList<String>
ArrayList
TypeToken
有一个用途,番石榴可能会使用。如您所知,类型在编译后会丢失,但如果在类级别对类型进行操作,则在编译后不会丢失,并且可以通过反射提取。我将在一分钟内输入代码以提取类型。
编辑我不知道代码是否有任何用处,但在这里它是
public class Reflect {
public static void main(String[] args) {
Super<String> aStringSuper = new Super<String>() {};
aStringSuper.method();
Super<List<Integer>> aListSuper = new Super<List<Integer>>() {};
aListSuper.method();
}
}
class Super<T> {
public void method() {
Type genericSuperclass = this.getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
for(Type type : parameterizedType.getActualTypeArguments()) {
System.out.println(type);
}
}
}