Java wildcard generic as return warning in Eclipse and SonarQube(Java 通配符泛型作为 Eclipse 和 SonarQube 中的返回警告)
问题描述
private List gridModel;
public List getGridModel() {
return gridModel;
}
Eclipse 显示警告:
Eclipse shows a warning:
List 是原始类型.对泛型 List 的引用应该被参数化.
List is a raw type. References to generic type List should be parameterized.
将代码更改为以下将删除警告
Changing the code to below will remove the warning
private List<?> gridModel;
public List<?> getGridModel() {
return gridModel;
}
但是,上面的代码在 SonarQube 中显示了一个主要的陷阱错误:
However the above code shows a Major pitfall error in SonarQube which says:
删除通用通配符类型的使用.返回参数中不应使用通用通配符类型
Remove usage of generic wildcard type. Generic wildcard types should not be used in return parameters
那么我该如何解决这个警告呢?
我在这里看到 类似问题,但可以找不到解决办法.
So how can I fix this warning?
I see a similar question here but could not find the solution .
使用 Class
没有移除声纳警告.
Using Class<? extends Object>
did not remove Sonar warning.
推荐答案
那么我该如何解决这个警告呢?
So how can I fix this warning ?
你可以为你的类使用类型参数:
You can use a type parameter for your class :
public class GridModelHolder<T> {
private List<T> gridModel;
public List<T> getGridModel() {
return gridModel;
}
}
然后客户端代码可以决定 List
GridModelHolder
的类型:
The client code can then decide what type of List
GridModelHolder
holds :
GridModelHolder<字符串>gridModelHolder = new GridModelHolder
但是,如果您坚持使用原始类型,您可以取消警告或仅使用对象列表(不推荐使用这两种方法)
However, if you insist on using raw types, you can either suppress the warnings or simply have a List of objects (Neither of these are recommended)
@SuppressWarnings("unchecked")
public class GridModelHolder {
private List gridModel;
public List getGridModel() {
return gridModel;
}
}
或
public class GridModelHolder {
private List<Object> gridModel;
public List<Object> getGridModel() {
return gridModel;
}
}
这篇关于Java 通配符泛型作为 Eclipse 和 SonarQube 中的返回警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java 通配符泛型作为 Eclipse 和 SonarQube 中的返回警告


- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01