如何在java中运行时设置ArrayList的泛型类型?

jch*_*tel 8 java generics reflection

好的,所以我正在建立自己的XML序列化(我知道还有其他的,甚至是一些内置于Java的,但我自己也在学习,因为它非常棒).我有序列化了.我目前正在进行反序列化(读取XML文件并根据文件中的数据组装对象),我遇到了设置泛型类型的问题.经过广泛的研究,我想出了如何获取类的泛型类型,以便我可以在序列化时编写它们,但我不知道如何做到这一点:

Class c = Class.forName(string);
ArrayList<c> list = new ArrayList<c>();
Run Code Online (Sandbox Code Playgroud)

我在C#中看到了一些这方面的答案,但显然C#比Java更通用,我无法用Java复制那里的解决方案.甚至可以用反射来完成这项工作吗?

Bri*_*ach 13

你不能.

Java中的泛型只是编译时语法糖.它使得你不必Object像过去恐龙漫游JVM时所做的那样抛出所有内容,并为你提供一些编译时类型检查.

编辑补充:一些元数据在运行时,你可以通过反射得到保留检查像你想要的泛型类,但没有.

  • 哦,通过down-downvoter,请告诉我.或者我再次伤害了某人在互联网上的感受? (3认同)