Java 通配符泛型作为 Eclipse 和 SonarQube 中的返回警告

2024-05-10Java开发问题
288

本文介绍了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(new ArrayList);

但是,如果您坚持使用原始类型,您可以取消警告或仅使用对象列表(不推荐使用这两种方法)

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 中的返回警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

如何使报表页面方向更改为“rtl"?
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)...
2024-08-25 Java开发问题
19

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

有没有办法在 Java 中检测 RTL 语言?
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)...
2024-08-25 Java开发问题
11

如何在 Java 中从 DB 加载资源包消息?
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)...
2024-08-25 Java开发问题
13

如何更改 Java 中的默认语言环境设置以使其保持一致?
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)...
2024-08-25 Java开发问题
13