gpt4 book ai didi

java - 如何在Class.class中使用泛型

转载 作者:行者123 更新时间:2023-11-30 08:12:14 24 4
gpt4 key购买 nike

我想避免警告:

“类型安全,类型的表达需要未经检查的转换才能符合类”

来自这句话:

Class<MyInterface> cc = interpreter.get("Myclass", Class.class );

我已经尝试过:

Class<MyInterface> cc = interpreter.get("Myclass", Class<MyInterface>.class );

但是无效。

如果没有@SuppressWarnings("unchecked"),我该如何做到这一点

interpreter.get的签名:

T interpreter.get(String name, Class<T> javaClass)
<小时/>

上下文:我使用 Jython 库,并在 Python 中定义一个实现 MyInterface 的类,然后在 Java 中捕获该类,然后创建它们的实例。这就是为什么我需要类本身,而不是类的实例。

代码类似于:

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("from cl.doman.python import MyInterface");
....
interpreter.exec(pythonCode);
Class<MyInterface> cc = interpreter.get("Myclass", Class.class);
MyInterface a = (MyInterface) cc.newInstance();

我的代码工作正常,但我无法抑制警告。

最佳答案

可能

Class<?> clazz = interpreter.get("Myclass", Class.class); 
Class<? extends MyInterface> cc = clazz.asSubclass(MyInterface.class);
// look, Ma, no typecast!
MyInterface a = cc.newInstance();

关于java - 如何在Class.class中使用泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30205620/

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