gpt4 book ai didi

java 反射 :Avoid warning unchecked call to getConstructor(Class...) 作为原始类型类的成员

转载 作者:行者123 更新时间:2023-12-03 23:15:42 25 4
gpt4 key购买 nike

我已经阅读了这篇文章

java: unchecked call to getConstructor(java.lang.Class<?>...)

for (Map.Entry<String, Class> entry : connectionRepository.entrySet()) {
if (/*someconditionhere*/) {
try {
cwsConnection = (CWSConnection)entry.getValue().getConstructor().newInstance();
break;
} catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
logger.error("Could not Create instance of CWSConnection for site version:\"{}\" Error:\"{}\"", entry.getKey(), e.getMessage(), e);
}
}
}

在编译这段代码时我收到警告

warning: [unchecked] unchecked call to getConstructor(Class...) as a member of the raw type Class

我只是想获取 CWSConnection 的默认构造函数,因此,我不应该将任何参数传递给 getConstructor(Class...) 方法。有没有更好的方法来获取默认构造函数(没有参数的那个)

(我知道 @SupressWarning 注释会抑制这个警告。)

最佳答案

只需将循环声明更改为

for (Map.Entry<String, Class<?>> entry : connectionRepository.entrySet()) {

您遇到此错误是因为您使用了参数化的 Class作为原始类型。 Here you can read about generics and wildcards .您可以使用 Class<?>并避免这个错误。但是转换到CWSConnection仍然需要。您可以通过拥有 Map<String, Class<CWSConnection>> 来避免它而不是 Map<String, Class<?>> .

关于java 反射 :Avoid warning unchecked call to getConstructor(Class<? >...) 作为原始类型类的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38523722/

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