static 方法引用
public interface Find {
public int toFind();
}
public class MyClass {
public static int myFind() {
//do something...
}
}
我们想要快捷的利用MyClass中的myFind()来实现Find接口,我们可以这样:
Find finder = MyClass::myFind();
构造方法引用
public interface Factory {
public String create(char[] chars);
}
Factory factory = String::new;
参数方法引用
public interface Find {
public int toFind(String s1, String s2);
}
Find finder = String::indexOf
这种用法值得注意一下,String#indexOf并不是static方法,但是却能使用String::indexOf的方式来使用,原因是toFind(String s1, String s2需要两个参数,第一个为String,第二个也是String,于是,编译器会帮你自动识别,将上面的lambda转换为:
Find finder = (s1, s2) -> s1.indexOf(s2);
String::indexOf()只需要一个参数,Find#toFind()需要两个参数,因此Find#toFind()的第一个参数可以理解为调用String::indexOf()的对象。
实例方法引用
public interface Find {
public int toFind(String s);
}
public class MyClass {
public int myFind(String s) {
//do something...
}
}
````java
Myclass obj = new MyClass();
Find finder = obj::myFind;
本文深入探讨了Java中方法引用的概念,包括静态方法引用、构造方法引用、参数方法引用及实例方法引用,通过具体示例展示了如何在接口实现中优雅地应用这些引用。
932

被折叠的 条评论
为什么被折叠?



