我们在 MyClass 类中有以下代码:
private static Comparator<Map.Entry<?, ?>> comparator = MyClass::compare;
@SuppressWarnings("unchecked")
private static <K,V> int compare(Map.Entry<K, V> me1, Map.Entry<K, V> me2) {
int f = ((Comparable<K>)me1.getKey()).compareTo(me2.getKey());
if (f!=0) return f;
return ((Comparable<V>)me1.getValue()).compareTo(me2.getValue());
}
问题:是否有可能以某种方式避免将方法编写compare(me1,me2)为类方法MyClass,以便有这样的东西:
private static Comparator<Map.Entry<?,?>> comparator = (K,V,me1,me2) -> {...};
最好用 and 替换该行中的标记and ,?例如,在 class中,但非静态访问当然不可用。让现场保持静止对我来说很重要。?KVMyClass<K,V>comparator
Herbert Schildt,“Java 8。完整指南。第九版。” (第 446 页):
这意味着如果没有对包含字段的类的类型参数进行非静态访问
comparator,或者没有显式编写方法,就compare(me1, me2)不可能创建所需比较器的实现(它将具有通用方法compare(...))。