加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 8中的功能接口

发布时间:2020-12-14 05:23:55 所属栏目:Java 来源:网络整理
导读:我很难分类为什么lambda表达式可以分配给一些功能接口,而不是其他功能接口.一个例子,使用一些功能界面从 Metrics library: GaugeDouble foo = () - { return null; };RatioGauge bar = () - { return null; }; 第二个语句有一个编译错误(在Eclipse中): The
我很难分类为什么lambda表达式可以分配给一些功能接口,而不是其他功能接口.一个例子,使用一些功能界面从 Metrics library:
Gauge<Double> foo = () -> { return null; };
RatioGauge bar = () -> { return null; };

第二个语句有一个编译错误(在Eclipse中):

The target type of this expression must be a functional interface

据我所知,RatioGauge is a functional interface.我错过了什么吗?

解决方法

一个抽象类(即使它只有一个抽象方法)不是一个功能界面.只有一个接口可以是一个.

从JLS 9.8:

A functional interface is an interface that has just one abstract method (aside from the methods of Object)… (emphasis added)

最初的想法是让abstact类被表达为lambda;它们被称为“SAM类型”,它代表“单抽象方法”.这是一个难以解决的问题. This thread谈谈为什么;基本上,基类的构造函数使得它变得困难.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读