pat*_*art 5 java generics reflection
GSON的 toJson 函数采用类型参数,该参数在反映对象时检查类型。这对于将对象反射到集合中非常有用。
然而,我能找到的获取类型的唯一方法是通过一组丑陋的编码扭曲:
//used for reflection only
@SuppressWarnings("unused")
private static final List<MyObject> EMPTY_MY_OBJECT = null;
private static final Type MY_OBJECT_TYPE;
static {
try {
MY_OBJECT_TYPE = MyClass.class.getDeclaredField("EMPTY_MY_OBJECT").getGenericType();
} catch (Exception e) {
...
}
}
private List<MyObject> readFromDisk() {
try {
String string = FileUtils.readFileToString(new File(JSON_FILE_NAME), null);
return new Gson().fromJson(string, MY_OBJECT_TYPE);
} catch (Exception e) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在不引用内部类变量的情况下初始化类型?伪代码看起来像这样:
private static final Type MY_OBJECT_TYPE = TypeUtils.generate(List.class, MyObject.class);
Run Code Online (Sandbox Code Playgroud)
JavadoctoJson看起来可以回答您的问题
typeOfSrc - src 的特定泛型类型。您可以使用 TypeToken 类获取此类型。例如,要获取 Collection 的类型,您应该使用:
Type typeOfSrc = new TypeToken<Collection<Foo>>(){}.getType();
Run Code Online (Sandbox Code Playgroud)
所以在你的例子中。
private static final Type MY_OBJECT_TYPE = new TypeToken<List<MyObject>>(){}.getType();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2894 次 |
| 最近记录: |