Pri*_*shi 22 java anonymous-class inner-classes guava
我正在调查Guava图书馆,我遇到了一个空洞的匿名内部课程TypeToken.
TypeToken<List<String>> stringListTok = new TypeToken<List<String>>() {};
Run Code Online (Sandbox Code Playgroud)
什么是空匿名内部类的确切使用以及哪些有用的场景可以提供帮助?
Jon*_*eet 33
这样做的目的是允许TypeToken查找实例的超类 - 它将保留类型参数信息.
例如,虽然一个ArrayList<String>对象不知道它的元素类型是String由于擦除,但是超类信息不会丢失,因此new ArrayList<String>{}知道它的超类ArrayList<String>不仅仅是ArrayList.TypeToken使用该技术来表示构造的泛型类型.
Aug*_*sto 18
Guava可能会使用一种用途.如您所知,类型在编译后会丢失,但如果类型在类级别处被填充,那么它在编译后不会丢失,并且可以通过反射来提取.我会在一分钟内将代码提取出来.
编辑我不知道代码是否有用,但在这里
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1162 次 |
| 最近记录: |