gpt4 book ai didi

java - 在给定泛型类型输入的运行时获取 Class>

转载 作者:行者123 更新时间:2023-12-01 22:41:56 27 4
gpt4 key购买 nike

我知道已经有很多关于类似问题的问题,但我还没有找到一个可以直接解决这个问题的问题。

这是我尝试实现的代码的框架:

class MyObj<T> {
// Internals are unimportant ...
}

private <T> void foo(T arg) {
Class<MyObj<T>> clazz = // What do I write here?

// Here is one thing that works, but is quite ugly:
@SuppressWarnings("unchecked")
clazz = (Class<MyObj<T>>)(new MyObj<T>().getClass())

// ...

// Later, clazz is passed to a constructor of some other class
OtherClass<MyObj<T>> foo = new OtherClass<>(clazz);
}

问题 1:有人对如何填充 clazz 有更好的建议吗?理想情况下,它会避免调用new

问题 2:鉴于上面的丑陋(但有效)代码,是否有任何情况可能会崩溃?我不喜欢@SuppressWarnings,并且担心我可能隐藏的问题。

最佳答案

为了避免实例化,您可以编写:

Class<MyObj<T>> clazz = (Class) MyObj.class;

由于删除,MyObj 存在一个 Class 实例,无论它可能具有什么类型参数,因此虽然这很丑陋,但它是安全的。

关于java - 在给定泛型类型输入的运行时获取 Class<Foo<T>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001021/

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