用于指定generics方法的方法引用的语法

我在“Java – 初学者指南”中阅读了以下代码

interface SomeTest  { boolean test(T n, T m); } class MyClass { static  boolean myGenMeth(T x, T y) { boolean result = false; // ... return result; } } 

以下声明有效

 SomeTest  mRef = MyClass ::  myGenMeth; 

关于上述代码的解释有两点

1 – 当generics方法被指定为方法引用时,其类型参数位于::和方法名称之前。

2 – 如果指定了generics类,则type参数在类名后面,并在::之前。

我的查询: –

上面的代码是第一个引用点的示例

有人能为我提供一个实现第二个引用点的代码示例吗?

(基本上我不明白第二个引用点)。

第二个引用点仅表示类型参数属于该类。 例如:

 class MyClass { public boolean myGenMeth(T x, T y) { boolean result = false; // ... return result; } } 

然后将这样调用:

 SomeTest mRef = new MyClass() :: myGenMeth; 

例如

  Predicate> p = List::isEmpty; 

实际上我们这里不需要类型参数; 类型推断会照顾

  Predicate> p = List::isEmpty; 

但是在类型推断失败的情况下,例如,在没有足够的推理约束的情况下将此方法引用传递给generics方法时,可能需要指定类型参数。