用于指定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方法时,可能需要指定类型参数。