JDK8新特性之方法引用
生活随笔
收集整理的這篇文章主要介紹了
JDK8新特性之方法引用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載自?JDK8新特性之方法引用
什么是方法引用
方法引用是只需要使用方法的名字,而具體調用交給函數式接口,需要和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都相應更新了。
?
總結
以上是生活随笔為你收集整理的JDK8新特性之方法引用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDK8新特性之Lambda表达式
- 下一篇: Android 14 源码正式推送至 A