JDK8新特性之方法引用
2018-01-22 09:12
507 查看
什么是方法引用
方法引用是只需要使用方法的名字,而具体调用交给函数式接口,需要和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都相应更新了。
推荐阅读
干货:2TB架构师四阶段视频教程面经:史上最全Java多线程面试题及答案
面经:史上最全阿里高级Java面试题
面经:史上最全Spring面试题
教程:最全Spring Boot全套视频教程
书籍:进阶Java架构师必看的15本书
工具:推荐一款在线创作流程图、思维导图软件
分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。
相关文章推荐
- JDK8新特性☞方法构造方法的引用
- Java 8新特性-4 方法引用
- Java8新特性——方法和构造函数引用
- Java 8.0新增特性(方法引用)
- Java8 新特性之三---------方法引用
- Java8新特性4--方法引用
- Java 8 新特性-菜鸟教程 (2) -Java 8 方法引用
- JDK8新特性之接口默认方法与静态方法
- Java 8新特性 Lambda、方法引用以及Stream
- JDK8新特性:接口的静态方法和默认方法
- JDK8新特性:接口的静态方法和默认方法
- Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API
- Java8新特性(二)方法引用
- Java8新特性--方法引用
- Java8新特性-004-方法、构造器、数组引用
- JDK8新特性:接口的静态方法和默认方法
- Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API
- 方法的引用-java8新特性
- java8新特性(方法引用、构造器引用)
- JAVA8新特性(三)——方法引用