java方法引用

一、方法引用

1、概述

 示例:

package com.itbianma04;

public class Demo {
    public static void main(String[] args) {
        usePrinttable(s-> System.out.println(s));
        usePrinttable(System.out::println);
    }

    private static void usePrinttable(Printable p) {
        p.printString("爱生活");
    }
}

 

2、方法引用符

 

二、lambda表达式支持方法引用

1、常用的引用方式

 

2、引用类方法

代码实现:

package com.itbianma05;

public class Demo {
    public static void main(String[] args) {
        useConverter(s ->Integer.parseInt(s) );
        useConverter(Integer::parseInt);
    }
    private static void useConverter(Converter c){
        int number=c.convert("666");
        System.out.println(number);
    }
}

 

3、引用对象的实例方法

 

package com.itbianma06;

public class Demo {
    public static void main(String[] args) {
        //实例方法实现
        PrintString ps=new PrintString();
        ps.printUpper("sss");
        //使用lambda表达式实现
        usePrinter(x-> ps.printUpper(x));
        usePrinter(x-> System.out.println(x.toUpperCase()));
        //使用方法引用实现
        usePrinter(ps::printUpper);
    }
    private static void usePrinter(Printer p){
        p.printUpperCase("ddd");
    }
}

 

4、引用类的实例方法

 

package com.itbianma07;

public class Demo {
    public static void main(String[] args) {
        useMyString((s, x, y) -> {
            return s.substring(x, y);
        });
        useMyString((s, x, y) -> s.substring(x, y));

        useMyString(String::substring);
    }

    private static void useMyString(MyString m) {
        String result = m.mySubString("hello,world", 1, 3);
        System.out.println(result);
    }
}

 

5、引用构造器

 

package com.itbianma08;

public class Demo {
    public static void main(String[] args) {
        useStudentBuilder((s,x)->new Student(s,x));
        useStudentBuilder(Student::new);
    }

    private static void useStudentBuilder(StudentBuilder s) {
        Student stu = s.build("xiaoming", 12);
        System.out.println(stu.getName() + " " + stu.getAge());
    }
}

 

posted @ 2023-12-21 10:43  搬砖滴  阅读(13)  评论(0编辑  收藏  举报