当前位置: 首页 > 面试题库 >

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

蓝鸿哲
2023-03-14
问题内容

好的,因此,我正在设置自己的XML序列化(我知道那里还有其他东西,甚至Java中内置了一些东西,但是我自己学习来做,因为可以使用它非常棒)。我已经序列化了。我目前正在进行反序列化(读取XML文件并基于文件中的数据组装对象),并且在设置通用类型时遇到问题。经过广泛研究,我弄清楚了如何获取类的泛型类型,以便在序列化时可以编写它们,但是我不知道如何执行此操作:

Class c = Class.forName(string);
ArrayList<c> list = new ArrayList<c>();

我已经在C#中看到了一些答案,但是显然C#比Java更具通用性,而且我无法在Java中复制解决方案。即使反射,也可以做到吗?


问题答案:

你不能

Java中的泛型只是编译时的语法糖。它使您不必Object像过去恐龙漫游JVM时那样来回转换所有内容,并且可以进行一些编译时类型检查。

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



 类似资料:
  • 问题内容: 这是我的代码:ExecutorImp扩展了AbstractExecutor,它提取了与实现者相同的执行逻辑(ExecutorImp是一种情况),当调用ExecutorImp的execute()方法时,它将在其父类型中调用该方法,但在父类型中调用该方法(AbstractExcutor )应该知道与实现者绑定的另一个类(在示例中,它是User类): 所以,我的代码有什么问题? 问题答案:

  • 问题内容: 在Hibernate 3.2中如何在运行时设置获取类型? 如果有可能在运行时更改获取类型(“懒惰/渴望”)。因此,如果已经定义了获取模式,即hibernate.mapping文件中的“选择/连接”,是否有任何影响? 问题答案: 您可以用来指定要初始化的特定集合。 例如 在这里查看更多

  • 我有一个具有两个数据成员的泛型类。这是我写的一段代码 我想对num1和num2进行简单的算术运算,比如加法和减法,我还想进行简单的二进制运算,比如 但是这是不允许的,那么有人能告诉我如何执行这些任务吗?

  • 问题内容: 背景 我对 Java泛型的 理解是它完全是一个 编译时 功能(主要侧重于类型安全检查)。任何泛型类的类型信息在运行时都会丢失( 类型擦除 )。 不过,我看到许多框架 似乎 也在运行时利用类型信息。例如,google guice Providers。guice提供程序可以在运行时实例化并提供其通用类型的新实例。 题 是否还有与泛型类型相关的信息,这些信息也会在运行时保留。? 如果 是 ,

  • 使用Gson库,我通过以下代码将JSON字符串转换为ArrayList对象: 您可以在第二段代码中看到,我使用反射来指定类的类型;但是对于第一段代码,我不知道如何使用反射指定列表的类型。 我该怎么办?!

  • 注意:“else”语句只是出于测试目的,似乎表明if语句没有正常工作,因为当我测试时,它总是被触发。