java中的方法引用

方法引用是对lambda的进一步简化,如果方法体只有一个方法调用的话,可以直接采用对象名(类名)::方法名的格式(想起来了C++的一些语法)

一个例子:上面是lambda的一种写法,下面是方法引用的改进

int[] arr = {-1, 2, 3, 4, 5, 6};
Arrays.stream(arr).forEach(a-> System.out.println(a));
Arrays.stream(arr).forEach(System.out::println);

引用类的静态方法/对象的实例方法的使用前提:重写的方法中,方法体只有一行代码,并且这行代码是调用了某个类的静态方法/某个对象的成员方法,抽象方法中的所有参数已经按照顺序传入了这个静态方法中。

引用类的实例的方法的使用前提:重写的方法中,方法体只有一行代码,这行代码是调用了第一个参数的成员方法抽象方法中的所有参数已经按照顺序传入了这个静态方法中有些难懂,附上一个例子

 interface UseString {
        String use(String str, int start, int length);
    }

    public static String subAuthorName(String str, UseString useString) {
        int start = 0;
        int length = 1;
        return useString.use(str, start, length);
    }

    public static void main(String[] args) {
        subAuthorName("天启A", new UseString() {
            @Override
            public String use(String str, int start, int length) {
                return str.substring(start,length);
            }
        });
     }
上述main中的方法只要替换成subAuthorName("天启A", String::substring);即可

构造器引用的使用前提:重写的方法中,方法体只有一行代码,这行代码是调用了某个类的构造方法,抽象方法中的所有参数已经按照顺序传入了这个构造方法中
//注意 上一个stream是string类型
name->new StringBuilder(name)

StringBuilder::new

 

 
posted @ 2023-12-26 20:42  天启A  阅读(40)  评论(0)    收藏  举报