我正在努力generics,发现以下代码给出了编译时错误comparing method.
此行的多个标记 - 无法推断用于比较的类型参数(功能) - 类型A未定义适用于此处的m1(对象)
class A<T> {
String m1() {
return null;
}
}
class B {
void test() {
Comparator<A<String>> target = Comparator.comparing(A::m1).thenComparing(A::m1);
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解这种行为; 我该如何解决这个问题呢?
如果在comparing方法中指定了确切的泛型类型,则代码将进行编译.
Comparator<A<String>> target =
Comparator.<A<String>, String>comparing(A::m1).thenComparing(A::m1);
Run Code Online (Sandbox Code Playgroud)
您应该为A类指定类型参数.
Comparator<A<String>> target = Comparator.comparing(A<String>::m1).thenComparing(A<String>::m1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
430 次 |
| 最近记录: |