• 45.方法引用


    1.体验一下方法引用

    public interface PrintInterface {
        void print(String s);
    }
    public class Demo {
        public static void main(String[] args) {
            show(s -> System.out.println(s));
    //        方法引用符:"::"就会把上面方法里面的s传递给下面的println
            show(System.out::println);
    //        可推导的就是可省略的
        }
        public static void show(PrintInterface printInterface){
            printInterface.print("体验一下方法引用");
        }
    }

    2.方法引用符

     3.Lamdba表达式支持的方法引用

    引用类方法:

    public interface Convertor {
        int convert(String s);
    }
    public class ConvertorDemo {
        public static void main(String[] args) {
    //        1.Lamdba
            convert((String s)->{
                int i = Integer.parseInt(s);
                return i;
            });
    //        2.Lamdba省略
            convert(s -> Integer.parseInt(s));
    //        3.方法引用
            convert(Integer::parseInt);
    //        Lambda表达式被类方法引用替代时,她的形式参数全部传递给静态方法作为参数
        }
    
        public static void convert(Convertor convertor) {
            int i = convertor.convert("888");
            System.out.println(i);
        }
    }

    引用对象的实例方法:

    public interface PrinterINterface {
        void toUpCase(String s);
    }
    public class Print {
        public void toUpCase(String s){
            System.out.println(s.toUpperCase());
        }
    }
    public class PrintDemo {
        public static void main(String[] args) {
    //        1.Lamdba表达式实现
            toUpCase((String s)->{
                System.out.println(s.toUpperCase());
            });
    //        2. 1.Lamdba表达式简写
            toUpCase(s -> System.out.println(s.toUpperCase()));
    //        3.引用对象的实例方法
            toUpCase(new Print()::toUpCase);
    //        Lambda表达式被引用对象的实例方法替代时,她的形式参数全部传递给静态方法作为参数
        }
    
        public static void toUpCase(PrinterINterface printInterface) {
            printInterface.toUpCase("hourumiyue");
        }
    }

    引用类的实例方法:

    public interface Sub {
        String sub(String s, int x, int Y);
    }
    public class SubDemo {
        public static void main(String[] args) {
            sub((s,x,y)->s.substring(x,y));
            sub(String::substring);
    //        Lambda表达式被类的实例方法替代的时候
    //        第一个参数作为调用者
    //        后面的参数全部传递给该方法作为参数
        }
        public static void sub(Sub sub) {
            String hourumiyue = sub.sub("hourumiyue", 2, 6);
            System.out.println(hourumiyue);
        }
    }

    引用构造器:

    public class Student {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public Student() {
        }
    
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }
    public interface StuBulider {
        Student stuBulid(String name,int age);
    }
    public class StuDemo {
        public static void main(String[] args) {
            stuBulide((name,age)->new Student(name,age));
            stuBulide(Student::new);
        }
    
        public static void stuBulide(StuBulider stuBulider) {
            Student student = stuBulider.stuBulid("云舒", 18);
            System.out.println(student.getName()+student.getAge());
        }
    }

     

  • 相关阅读:
    linux commands ---2 ,学习vim编辑器如何使用的方法。
    $stateParams 详解
    ipa 打包遇到的坑
    原生和jQuery的ajax用法
    ios 的 desciption
    ios上线流程
    android 上线流程
    cordova 常用插件
    iframe
    cordova 强制竖屏
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/13200136.html
Copyright © 2020-2023  润新知