2012-02-01 29 views
2

按标题, 为什么List<MyType>.class不起作用?我如何获得这种类型的类(作为类型参数传递给函数)。为什么列表<MyType> .class不起作用?

+0

您可能会发现这篇文章http://docs.oracle.com/javase/tutorial/java/generics/erasure.html这个问题有用http://stackoverflow.com/questions/339699/java-generics-type-erasure-when-and-what-happens – 2012-02-01 23:50:15

回答

1

在Java中,List<MyType>.classList.class。由于称为“类型擦除”,这两者相当。

+0

是的,但有时需要泛型类型,例如json反序列化。 Gson像这样处理它:http://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Gener – Kevin 2012-02-01 23:52:28

+0

其实我只是需要 – gotch4 2012-02-01 23:53:37

+0

“泛型”的概念,根本不存在于JVM(运行时)上。当代码被编译时,通用信息被擦除 - 被销毁。 – luiscubal 2012-02-01 23:55:54

1

Java泛型基于type erasure - 运行时不存在单个对象的类型参数。如果你描述你特别想要达到的目标,我们可能会想出一个解决方法。

+0

我想他想把这个类作为类型参数传递给反射函数。他应该全部设置 - 只是通过List.class。 – user949300 2012-02-01 23:54:52

0

您也可能想要指出泛型所隐含的约定在编译时执行。编译器执行正确的强制转换,检查类型,然后发生类型擦除。

0

为谷歌GSON图书馆解决方案是使用TypeToken:

Type a = new TypeToken<List<MyClass>>() {}.getType(); 
相关问题