方法引用
...大约 1 分钟
方法引用
方法引用是一种简化Lambda表达式的语法结构,它提供了一种更简洁的方式来调用已经存在的方法。方法引用可以替代某些Lambda表达式,使得代码更加简洁易读
方法引用的语法形式是 ::
,它可以用来引用以下几种类型的方法:
- 静态方法
- 实例方法
- 构造方法
- 静态方法引用:
ClassName::staticMethodName
- 实例方法引用:
- 实例方法引用:
instance::methodName
- 类名::实例方法名
- 实例方法引用:
- 构造方法引用:
ClassName::new
2. 示例
2.1 对象名:方法名
public static void main(String[] args) {
Date now = new Date();
Supplier<Long> supplier = ()->{return now.getTime();};
System.out.println(supplier.get());
// 然后我们通过 方法引用 的方式来处理
Supplier<Long> supplier1 = now::getTime;
System.out.println(supplier1.get());
}
方法引用的注意事项
- 被引用的方法,参数要和接口中的抽象方法的参数一样
- 当接口抽象方法有返回值时,被引用的方法也必须有返回值
2.2 类名::静态方法名
public class FunctionRefTest04 {
public static void main(String[] args) {
Supplier<Long> supplier1 = ()->{
return System.currentTimeMillis();
};
System.out.println(supplier1.get());
// 通过 方法引用 来实现
Supplier<Long> supplier2 = System::currentTimeMillis;
System.out.println(supplier2.get());
}
}
2.3 类名::引用实例方法
2.4 类名::构造器
public class FunctionRefTest06 {
public static void main(String[] args) {
Supplier<Person> sup = ()->{return new Person();};
System.out.println(sup.get());
// 然后通过 方法引用来实现
Supplier<Person> sup1 = Person::new;
System.out.println(sup1.get());
BiFunction<String,Integer,Person> function = Person::new;
System.out.println(function.apply("张三",22));
}
}
2.5 数组::构造器
public static void main(String[] args) {
Function<Integer,String[]> fun1 = (len)->{
return new String[len];
};
String[] a1 = fun1.apply(3);
System.out.println("数组的长度是:" + a1.length);
// 方法引用 的方式来调用数组的构造器
Function<Integer,String[]> fun2 = String[]::new;
String[] a2 = fun2.apply(5);
System.out.println("数组的长度是:" + a2.length);
}