java - 在 <> 中使用对象名称作为新的 ArrayList是正确的还是可以只使用<>?
问题描述
我创建了如下(1)方式的泛型,但是当声纳给我错误替换时,它有(2)。我需要知道,使用 <> 运算符创建泛型的最佳和正确方法是什么。
- 1
不合规代码示例
List<String> strings = new ArrayList<String>(); // Noncompliant
Map<String,List<Integer>> map = new HashMap<String,List<Integer>>(); // Noncompliant
- 2
合规解决方案
List<String> strings = new ArrayList<>();
Map<String,List<Integer>> map = new HashMap<>();
声纳代码分析给出以下警告:
ava 7 引入了菱形运算符 (<>) 以减少泛型代码的冗长。例如,您现在可以使用 <> 简化构造函数声明,而不必在声明和构造函数中声明 List 的类型,编译器将推断类型。
请注意,当项目的 sonar.java.source 低于 7 时,此规则会自动禁用。
解决方案
你是对的,使用菱形运算符(在 Java 7 中引入)作为:
List<String> strings = new ArrayList<>();
Map<String,List<Integer>> map = new HashMap<>();
更好,因为让编译器根据声明的类型推断参数。
推荐阅读
- java - 使用 lambda 绑定布尔属性时出现问题 [Java - JavaFX]
- c++ - rapidjson 输出中的订单属性
- reactjs - 使用启用了新 typescript 的 reactjs 版本时超出了最大调用堆栈大小
- sql - 如何将 ListView 中的多个项目保存到 SQL Server 数据库中?
- jquery - 使用 Django 和 jQuery 的过滤器
- reactjs - React Hook useCallback 有一个不必要的依赖:'price'。排除它或删除依赖数组 react-hooks/exhaustive-deps
- facebook - Page Public Content Access\',您对此端点的使用必须经过 Facebook 的审核和批准
- javascript - webpack splitchunks 不能消除重复包
- java - 使用消费者时无法解析方法
- android - 在后台以 xamarin 形式获取位置