zoukankan      html  css  js  c++  java
  • 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());
        }
    }

     

  • 相关阅读:
    PriorityQueue详解
    Queue介绍
    Dubbo面试踩坑
    Java中Integer和ThreadLocal
    Java中Deque特性及API
    由ubuntu装好想到的
    双系统试水上岸
    终于意识到BIM确实火了
    读阿里机器学习平台的一些总结
    继续ubuntu和遇到的easybcd的坑
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/13200136.html
Copyright © 2011-2022 走看看