首页 > 解决方案 > Comparable 是原始类型。对泛型类型 Comparable 的引用应该参数化

问题描述

我正在设置我的变量

Map<String, Function<CLASS_NAME, Comparable>> map = new HashMap<>();

在哪里Comparable给出警告信息

Comparable is a raw type. References to generic type Comparable<T> should be parameterized

我正在使用它

map.put(VARIABLE_NAME1, s -> s.getStringProperty());
map.put(VARIABLE_NAME2, s -> s.getIntProperty());
..

我正在使用比较喜欢

Comparator<CLASS_TYPE> v = Comparator.comparing(map.get(VARIABLE_NAME), Comparator.nullsFirst(Comparator.naturalOrder()));

应该使用什么类型的 Generic 来避免警告?

标签: javagenericslambdafunctional-programming

解决方案


Comparable 显然是一个泛型类型。

所以你需要的只是:

Map<String, Function<CLASS_NAME, Comparable<CLASSNAME>>> map = new HashMap<>();

代替

Map<String, Function<CLASS_NAME, Comparable>> map = new HashMap<>();

或者你想比较另一种类型..?

Map<String, Function<CLASS_NAME, Comparable<SomeOtherClass>>> map = new HashMap<>();

推荐阅读