方法引用
前置条件
- 必须是函数式接口
功能
- 不同的方法名称可以描述同一个方法,即接口中的抽象方法可以引用库中的方法
使用方法
- 静态方法
package alikecheng;
@FunctionalInterface
interface Imessage1<P,R> {
public R change (P p) ;
}
public class Ali_30 {
public static void main(String[] args) {
Imessage1<Integer,String> fun = String :: valueOf ;
String str = fun.change(100);
System.out.println(str.length());
}
}
- 实例对象方法
package alikecheng;
@FunctionalInterface
interface Imessage1<R> {
public R change () ;
}
public class Ali_30 {
public static void main(String[] args) {
Imessage1<String> fun = "www.mldn" :: toUpperCase ;
System.out.println(fun.change());
}
}
- 特定类型的方法
package alikecheng;
@FunctionalInterface
interface Imessage1<P> {
public int change (P p1,P p2) ;
}
public class Ali_30 {
public static void main(String[] args) {
Imessage1<String> fun = String :: compareTo ;
System.out.println(fun.change("A", "a"));
}
}
与静态方法有些相似
- 构造方法
package alikecheng;
class Person111 {
private String name;
private int age;
public Person111 (String name,int age) {
this.age=age;
this.name=name;
}
public String toString() {
return "姓名: "+this.name+" 年龄:" +this.age;
}
}
@FunctionalInterface
interface Imessage1<R> {
public R change (String name,int age) ;
}
public class Ali_30 {
public static void main(String[] args) {
Imessage1<Person111> fun = Person111 :: new ;
System.out.println(fun.change("张三", 20));
}
}