方法引用和构造器引用

方法引用和构造器引用

方法引用

若lambda体中的内容有方法已经实现了,可以使用“方法引用”,

主要有三种语法格式:

对象::实例方法名

类::静态方法名

类::实例方法名

代码示例:

    //对象::实例方法名
    @Test
    public void test01(){
    
    

        PrintStream ps1 = System.out;
        Consumer<String> con = (x) -> ps1.println(x);
        con.accept("我为爱判处终生孤寂");

        PrintStream ps = System.out;
        Consumer<String> con1 = ps::println;
        con1.accept("轻轻地风儿轻轻的吹");

        Consumer<String> con2 = System.out::println;
        con2.accept("你永远不懂我伤悲,像白天不懂夜的黑");
    }

    //类::静态方法名
    @Test
    public void test02(){
    
    
        Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
        Comparator<Integer> com1 = Integer::compare;
    }

    //类::实例方法名
    @Test
    public void test03(){
    
    
        BiPredicate<String,String> bp = (x,y) -> x.equals(y);
        BiPredicate<String,String> bp2 = String::equals;
    }

构造器引用

格式:

​ ClassName :: new

代码示例:

    //构造器引用
    @Test
    public void test04(){
    
    
        Supplier<Employee> sup = () -> new Employee();

        //构造器引用方式
        Supplier<Employee> sup2 = Employee::new;
        Employee employee = sup2.get();
        System.out.println(employee);
    }

    @Test
    public void test05(){
    
    
        Function<Integer,Employee> fun = (x) -> new Employee(x);
        Function<Integer,Employee> fun2 = Employee::new;
        Employee emp = fun2.apply(101);
        System.out.println(emp);
    }

猜你喜欢

转载自blog.csdn.net/weixin_48161246/article/details/110731702
今日推荐