java8 新特性之方法引用

参考文章:菜鸟教程 https://www.runoob.com/java/java8-method-references.html

这一章节如果不好理解可以去看下我的另一篇函数接口,这章节其实用到的也是函数结果。

java8 新特性之函数式接口

方法引用介绍:

方法引用通过方法的名字来指向一个方法。

方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

方法引用使用一对冒号 :: 。

1、构造器引用:它的语法是Class::new,或者更一般的Class< T >::new实例如下:

// 构造方法引用  暂时发现只能无参构造方法引用
Supplier<Lambda> supplier  = Lambda::new;

2、静态方法引用:它的语法是Class::static_method,实例如下:

复制代码
public class Lambda {

    Lambda(){};
    Lambda(int i){};

    static void test(Lambda l){System.out.println(l);};
    static void test2(String l){System.out.println(l);};

    public static void main(String[] args) {
        // 构造方法引用  暂时发现只能无参构造方法引用
        Supplier<Lambda> supplier  = Lambda::new;
        Consumer<Lambda> consumer = x->System.out.println(x);;
        Consumer<Lambda> consumer2 = Lambda::test;
        Consumer<String> consumer3 = Lambda::test2;
    }
}
复制代码

3、特定类任意实例的方法引用:它的语法是instance::method实例如下:

Supplier<Lambda> supplier  = Lambda::new;
Supplier<Integer> consumer4 = supplier.get()::repair;

 

由上可以看出,只是把这个类的方法,赋值给函数接口,具体调用的时候传入参数 ,编译期检查参数类型是否符合函数接口的泛型。

 

posted @   苦心明  阅读(212)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示