gpt4 book ai didi

java - 如何在没有警告的情况下调用构造函数?

转载 作者:行者123 更新时间:2023-12-01 17:18:31 25 4
gpt4 key购买 nike

我使用了 here 中的代码:

public Object loadService() throws Exception {
ClassLoader parentClassLoader = ServiceReloader.class.getClassLoader();
ServiceReloader classLoader = new ServiceReloader(parentClassLoader);
Class aClass = classLoader.loadClass("pl.jcubic.Service");

Constructor<?> ctor = aClass.getConstructor(new Class[] { String.class });
return ctor.newInstance(new Object[] { cwd() });
}

(ServiceReloader 是一个扩展 ClassLoader 的类,用于加载文件 pl/jcubic/Serice.class)(我的 Service 类如何使用两个构造函数,一个带有一个参数 String,一个为 null)。

当我调用该代码时,我得到:

init.java:40: warning: [unchecked] unchecked call to getConstructor(Class<?>...) as a member of the raw type Class
Constructor<?> ctor = aClass.getConstructor(new Class[] { String.class });
^
where T is a type-variable:
T extends Object declared in class Class
1 warning

我对泛型不是很熟悉,因为当我学习 Java 时,它们并没有包含在该语言中。

我试图输入Class<?>[]但得到了同样的警告。有没有办法抑制这个警告?

最佳答案

要消除警告,请更改为

Class<?> aClass = classLoader.loadClass("pl.jcubic.Service");

Constructor<?> ctor = ((Class<?>) aClass).getConstructor(new Class[] { String.class });

问题是getConstructor的返回类型是 Constructor<T>哪里TClass 的类型参数类(class)。但由于编译器不知道 aClass 的类型参数,它会警告你。

关于java - 如何在没有警告的情况下调用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409687/

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