JDK8系列之Method References教程和示例
【摘要】 JDK8系列之方法引用教程和示例
在上一章的学习中,我们学习了JDK8的lambada表达式,接着,本章节继续学习jdk8的方法引用
1、什么是jdk8方法引用
方法引用,英文Method References,jdk8中的方法引用通过方法的名字来指向一个方法,语法是使用一对冒号 ::,方法引用可以使语言的构造更紧凑简洁,减少冗余代码
2、方法引用的分类
方法...
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; }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
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));}); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
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();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
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);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
附录:参考资料
文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。
原文链接:smilenicky.blog.csdn.net/article/details/118681552
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)