最新公告
  • 欢迎您光临极客文库,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们

  • 什么是方法引用

    方法引用是只需要使用方法的名字,而具体调用交给函数式接口,需要和Lambda表达式配合使用。
    如:
    1. List<String> list =Arrays.asList("a","b","c");
    2. list.forEach(str ->System.out.print(str));
    3. list.forEach(System.out::print);
    上面两种写法是等价的。

    方法引用分类

    1、构造器方法引用

    格式: Class::new,调用默认构造器。

    2、类静态方法引用

    格式: Class::static_method

    3、类普通方法引用

    格式: Class::method,方法不能带参数。

    4、实例方法引用

    格式: instance::method

    示例

    往User类添加方法引用方法:
    1. publicstaticUser create(Supplier<User> supplier){
    2.    return supplier.get();
    3. }
    4. publicstaticvoid updateUsername(User user){
    5.    user.setUsername(user.getUsername()+" updated.");
    6. }
    7. publicvoid updateAge(){
    8.    this.setAge(this.getAge()+10);
    9. }
    10. publicvoid changeAge(User user){
    11.    user.setAge(user.getAge()+10);
    12. }
    方法引用测试:
    1. publicstaticvoid main(String[] args){
    2.    List<User> list = initList();
    3.    // 1、构造器方法引用
    4.    User newUser =User.create(User::new);
    5.    newUser.setAge(1);
    6.    newUser.setUsername("new");
    7.    System.out.println(newUser);
    8.    // 2、类静态方法引用
    9.    list.forEach(User::updateUsername);
    10.    // 3、类普通方法引用
    11.    list.forEach(User::updateAge);
    12.    // 4、实例方法引用
    13.    User user =newUser();
    14.    list.forEach(user::changeAge);
    15.    list.forEach(System.out::println);
    16. }
    17. privatestaticList<User> initList(){
    18.    List<User> list =newArrayList<>();
    19.    list.add(newUser("oaby",23));
    20.    list.add(newUser("tom",11));
    21.    list.add(newUser("john",16));
    22.    list.add(newUser("jennis",26));
    23.    list.add(newUser("tin",26));
    24.    list.add(newUser("army",26));
    25.    list.add(newUser("mack",19));
    26.    list.add(newUser("jobs",65));
    27.    list.add(newUser("jordan",23));
    28.    return list;
    29. }
    输出结果:
    1. User[username=new, age=1]
    2. User[username=oaby updated., age=43]
    3. User[username=tom updated., age=31]
    4. User[username=john updated., age=36]
    5. User[username=jennis updated., age=46]
    6. User[username=tin updated., age=46]
    7. User[username=army updated., age=46]
    8. User[username=mack updated., age=39]
    9. User[username=jobs updated., age=85]
    10. User[username=jordan updated., age=43]
    可以看出方法引用都生效了,username和age都相应更新了。

    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » JDK8新特性之方法引用

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    Leave a Reply

    Hi, 如果你对这款资源有疑问,可以跟我联系哦!

    联系发布者

    Leave a Reply

    Hi, 如果你对这款资源有疑问,可以跟我联系哦!

    联系发布者
    • 101会员总数(位)
    • 3672资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 124稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级