JDK8新特性之方法引用
来源:互联网 发布:linux system函数阻塞 编辑:程序博客网 时间:2024/05/29 11:44
什么是方法引用
方法引用是只需要使用方法的名字,而具体调用交给函数式接口,需要和Lambda表达式配合使用。
如:
List<String> list = Arrays.asList("a","b","c");list.forEach(str -> System.out.print(str));list.forEach(System.out::print);
上面两种写法是等价的。
方法引用分类
1、构造器方法引用
格式:Class::new
,调用默认构造器。
2、类静态方法引用
格式:Class::static_method
3、类普通方法引用
格式:Class::method
,方法不能带参数。
4、实例方法引用
格式:instance::method
示例
往User类添加方法引用方法:
public static User create(Supplier<User> supplier){ return supplier.get();}public static void updateUsername(User user){ user.setUsername(user.getUsername() + " updated.");}public void updateAge(){ this.setAge(this.getAge() + 10);}public void changeAge(User user){ user.setAge(user.getAge() + 10);}
方法引用测试:
public static void main(String[] args) { List<User> list = initList(); // 1、构造器方法引用 User newUser = User.create(User::new); newUser.setAge(1); newUser.setUsername("new"); System.out.println(newUser); // 2、类静态方法引用 list.forEach(User::updateUsername); // 3、类普通方法引用 list.forEach(User::updateAge); // 4、实例方法引用 User user = new User(); list.forEach(user::changeAge); list.forEach(System.out::println);}private static List<User> initList() { List<User> list = new ArrayList<>(); list.add(new User("oaby", 23)); list.add(new User("tom", 11)); list.add(new User("john", 16)); list.add(new User("jennis", 26)); list.add(new User("tin", 26)); list.add(new User("army", 26)); list.add(new User("mack", 19)); list.add(new User("jobs", 65)); list.add(new User("jordan", 23)); return list;}
输出结果:
User [username=new, age=1]User [username=oaby updated., age=43]User [username=tom updated., age=31]User [username=john updated., age=36]User [username=jennis updated., age=46]User [username=tin updated., age=46]User [username=army updated., age=46]User [username=mack updated., age=39]User [username=jobs updated., age=85]User [username=jordan updated., age=43]
可以看出方法引用都生效了,username和age都相应更新了。
推荐阅读
什么是Spring Boot?
Spring Boot开启的2种方式
Spring Boot Starters启动器
Spring Boot定制启动图案
Spring Boot核心配置
Spring Boot功能实战
Spring Boot自动配置原理、实战
Spring Boot Runner启动器
Spring Boot - Profile不同环境配置
看完有没有收获?分享到朋友圈给更多的人吧。
阅读全文
0 0
- JDK8新特性之方法引用
- JDK8新特性☞方法构造方法的引用
- JDK8新特性之接口默认方法与静态方法
- JDK8新特性之接口
- JDK8新特性之Optional
- Java8 新特性之三---------方法引用
- Java8新特性之三方法引用
- JDK8新特性之Lambda表达式
- JDK8新特性之接口总结
- JDK8新特性之Lambda表达式
- jdk8新特性之lambda表达式
- jdk8新特性之Date API
- JDK8新特性之函数式接口
- JDK8新特性之Lambda表达式
- JDK8新特性之Stream流
- JDK8新特性之函数式接口
- JDK8新特性之Lambda表达式
- JDK8之新特性扩展篇
- JDK8新特性之Optional
- JDK8之新特性扩展篇
- spring boot 在进行权限管理时出现栈溢出
- JDK8新特性之重复注解
- 有向图的邻接表储存
- JDK8新特性之方法引用
- SpringCloud配置中心高可用搭建
- SpringCloud配置中心客户端读取配置
- 2018年必看:关于区块链技术的10本书
- 什么是Kotlin?Java的替代语言?
- Junit5新功能一览
- Android_view的触摸反馈
- SpringCloud动态刷新配置信息
- 进程通信-信号量semaphore