JDK8系列之Method References教程和示例
Posted smileNicky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK8系列之Method References教程和示例相关的知识,希望对你有一定的参考价值。
JDK8系列之方法引用教程和示例
在上一章的学习中,我们学习了JDK8的lambada表达式,接着,本章节继续学习jdk8的方法引用
1、什么是jdk8方法引用
方法引用,英文Method References,jdk8中的方法引用通过方法的名字来指向一个方法,语法是使用一对冒号 ::
,方法引用可以使语言的构造更紧凑简洁,减少冗余代码
2、方法引用的分类
方法引用的使用有如下几种:
- 类的静态方法引用,类名::静态方法名
语法:ClassName :: staticMethodName
- 特定对象的实例方法引用,对象::实例方法名
语法:object :: instanceMethodName
- 类的任意对象的实例方法引用,类名::实例方法名
语法:ClassName :: instanceMethodName
- 构造器引用,类名::new(构造方法的引用)
语法:ClassName :: new
3、类的静态方法引用
import java.util.function.BiFunction;
public class MethodReferenceExample {
public MethodReferenceExample() {
}
public static void main(String[] args) {
// example 1:引用类的静态方法
BiFunction<Integer , Integer , Integer> add = MethodReferenceExample::add;
int pr1 = add.apply(5 , 20);
System.out.println(String.format("两个数相加的和:%s" , pr1));
}
public static int add(int a , int b) {
return a + b;
}
}
4、类的任意对象的实例方法引用
import java.util.Arrays;
public class MethodReferenceExample {
public MethodReferenceExample() {
}
public static void main(String[] args) {
// example 2:引用类的实例方法
String[] strs = {"Apple", "Banana" , "Apricot","Cumquat", "Grape", "Lemon","Loquat","Mango"};
Arrays.sort(strs , String::compareToIgnoreCase);
Arrays.asList(strs).forEach(str -> {System.out.println(String.format("水果名称:%s", str));});
}
}
5、特定对象的实例方法引用
public class MethodReferenceExample {
public MethodReferenceExample() {
}
public static void main(String[] args) {
// example 3:引用对象的实例方法
MethodReferenceExample example = new MethodReferenceExample();
MyFunctionalInterface functionalInterface = example::echo;
functionalInterface.display();
}
public void echo() {
System.out.println("hello world");
}
}
@FunctionalInterface
interface MyFunctionalInterface{
void display();
}
6、对构造函数的方法引用
public class MethodReferenceExample {
public MethodReferenceExample() {
}
public MethodReferenceExample(String msg) {
System.out.println(String.format("参数打印:%s" , msg));
}
public static void main(String[] args) {
// example 4:构造方法的引用
MyInterface myInterface = MethodReferenceExample::new;
myInterface.display("Method reference to a constructor");
}
}
@FunctionalInterface
interface MyInterface{
void display(String msg);
}
附录:参考资料
以上是关于JDK8系列之Method References教程和示例的主要内容,如果未能解决你的问题,请参考以下文章