__
HighTemp::lessThanTempis的 等效 lambda表达式
(highTemp1, highTemp2) -> { return highTemp1.lessThanTemp(highTemp2);}这是
特定类型的任意对象的实例方法的
Java8命名
引用
的功能之一。
__
考虑以下示例,
interface FIface<T> { int testMethod(T a, T b);}class Test2 { private String str; Test2(String str) { this.str = str; } int ok(Test2 test2) { System.out.println("Currnet String : "+ this.str);//Refer to t1 System.out.println("Test String : "+test2.str);//Refer to t2 return 0; }}public class Test { public static <T> int checkCall(T t1, T t2, FIface<T> fiFace) { //Here Test2 :: ok is equivalent to t1.ok(t2) return fiFace.testMethod(t1, t2); } public static void main(String[] args) { checkCall(new Test2("a"), new Test2("b"), Test2 :: ok); }}输出值
Currnet String : aTest String : b
请注意,这
Test2 :: ok对于call even
ok方法不是静态的有效。
当你调用该方法
checkCall的功能界面,你仍然有两个参数,其是
t1与
t2并为有效的lambda表达式可以有参数,
(Test t1,Test t2)所以你的方法
Test2 :: ok这里成为有效的呼叫。在内部它以这种方式工作
t1.ok(t2)。
因此,
fiFace.testMethod(t1, t2);将调用方法为
t1.ok(t2)



