gpt4 book ai didi

java - 有没有办法将一个类转换为具有特定参数的 java.lang.Class<> 泛型?

转载 作者:搜寻专家 更新时间:2023-10-31 20:10:40 26 4
gpt4 key购买 nike

Class<? extends MyClass> cls = (Class<? extends MyClass>) Class.forName(className);
someMethod(cls); // someMethod expects a Class<? extends MyClass>

上面的语句给出了一个警告“类型安全:未经检查的从 Class<capture#5-of ?>Class<? extends MyClass> 的转换”。

Class<?> cls0 = Class.forName(className);
if (cls0 instanceof Class<? extends MyClass>) {
Class<? extends MyClass> cls = (Class<? extends MyClass>)cls0;
someMethod(cls);
}

这次我得到一个错误,因为类型删除...

Class<?> cls0 = Class.forName(className);
if (MyClass.class.isAssignableFrom(cls0)) {
Class<? extends MyClass> cls = (Class<? extends MyClass>)cls0;
someMethod(cls);
}

这一次知道转换是安全的,但编译器不安全,并且仍然给出警告。 (如果你问我,编译器在这里有点厚。)

有什么方法可以避免这个警告(SuppressWarnings 除外)?

最佳答案

做你想做的事情的正确方法是:

Class.forName(className).asSubclass(MyClass.class);

关于java - 有没有办法将一个类转换为具有特定参数的 java.lang.Class<> 泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465610/

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