gpt4 book ai didi

java - 如何在 Java 中执行 `MyClass.class`?

转载 作者:太空狗 更新时间:2023-10-29 22:54:06 25 4
gpt4 key购买 nike

如何调用public <T> T doit(Class<T> clazz);使用 MyClass<String>.class作为 clazz,我无法实例化或扩展 MyClass。

编辑:'David Winslow' 和 'bmargulies' 的回答是正确的 (MyClass<String>) doit(MyClass.class);适用于原始问题,但令人惊讶的是,当方法返回时说 MyClass<T>而不是 T类型转换将不再编译。

编辑:我已将 List 替换为 MyClass 并将条件添加到我的原始问题中。

最佳答案

使用 List.class .因为type erasure Java 类的类型参数完全是一个编译时构造 - 即使 List<String>.class是有效的语法,它将是与 List<Date>.class 相同的完全相同的类等。由于反射本质上是运行时的事情,它不能很好地处理类型参数(如在 Java 中实现的那样)。

如果您想使用 Class 对象(例如)实例化一个新的 List 实例,您可以将该操作的结果强制转换为具有适当的类型参数。

List<String> list = (List<String>)(ArrayList.class.newInstance());

关于java - 如何在 Java 中执行 `MyClass<String>.class`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5207163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com