Comparator comparator = (o1, o2) -> o1.getBrand().compareTo(o2.getBrand());
使用方法引用以后,可以简写为:
Comparator comparator = Comparator.comparing(Mask::getBrand);
当你需要方法引用时,目标引用放在分隔符::
前,方法的名称放在分隔符::
后。比如,上面的Mask::getBrand
,就是引用了Mask
中定义的getBrand
方法。方法名称后不需要加括号,因为我们并没有实际调用它。方法引用提高了代码的可读性,也使逻辑更加清晰。
怎么构建方法引用?
可以构建方法引用的场景的有四种:
1. 静态方法
指向静态方法的引用,语法:类名::静态方法名
,类名放在分隔符::
前,:静态方法名放在分隔符::
后。比如:
(String str) -> Integer.parseInt(str)
使用方法引用以后,可以简写为:
Integer::parseInt
2. 内部对象的实例方法
指向Lambda表达式内部对象的实例方法的引用,语法:类名::实例方法名
,类名放在分隔符::
前,:实例方法名放在分隔符::
后。比如:
(Mask mask) -> mask.getBrand()
使用方法引用以后,可以简写为:
Mask::getBrand
3. 外部对象的实例方法
指向Lambda表达式外部对象的实例方法的引用,语法:实例名::实例方法名
,类名放在分隔符::
前,:实例方法名放在分隔符::
后。比如:
String type = “N95”;
Predicate predicate = (String str) -> type.equals(str);
System.out.println(predicate.test(“N95”));
其中,type
是一个Lambda表达式外部的局部变量,使用方法引用以后,可以简写为:
String type = “N95”;
Predicate predicate = type::equals;
System.out.println(predicate.test(“N95”));
如果对于Predicate
接口还不熟悉,没关系,以后的文章会介绍到,这里暂且知道它的抽象方法的签名是(T) -> boolean
就可以了。
4. 构造方法
指向构造方法的引用,语法:类名::new
,类名放在分隔符::
前,new
放在分隔符::
后。比如:
(String brand, String type) -> new Mask(brand, type)
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
总结
如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了
《Java中高级核心知识全面解析》
小米商场项目实战,别再担心面试没有实战项目:
,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了
《Java中高级核心知识全面解析》
[外链图片转存中…(img-KPb5PMhV-1710425977433)]
小米商场项目实战,别再担心面试没有实战项目:
[外链图片转存中…(img-PPIAhdzv-1710425977433)]