当前位置: 首页 > 知识库问答 >
问题:

等于(对象)和功能接口[重复]

葛晔
2023-03-14

根据Java语言规范(8.0版),“接口不继承自对象,而是隐式声明许多与对象相同的方法。”如果您在接口中提供来自Object类的抽象方法,它仍然是一个函数接口。

@FunctionalInterface
interface EqualsInterface {
    boolean equals(Object obj);
}

编译器给出错误:“EqualsInterface不是函数接口:在接口EqualsInterface中找不到抽象方法”。为什么?提前感谢

共有1个答案

爱琪
2023-03-14

根据Java API,

一种信息注释类型,用于指示接口类型声明旨在成为Java语言规范定义的功能接口。从概念上讲,功能接口只有一个抽象方法。由于默认方法有实现,它们不是抽象的。如果接口声明了一个抽象方法,覆盖了java.lang.Object的公共方法之一,这也不计入接口的抽象方法计数,因为接口的任何实现都将有一个来自java.lang.Object或其他地方的实现。

 类似资料:
  • 为什么上面的代码有编译错误“java:default method equals in interface Table重写java.lang.Object的一个成员”?难道我们不能使用接口默认方法重写hashCode和equals方法吗?假设我在同一个接口中有方法来确定实现这个接口的对象的相等性?

  • 问题内容: 在Java 8中,只有一个抽象方法的抽象类不是功能接口(JSR 335 )。 这是一个功能接口: 但这不是: 因此,我不能将抽象类用作lambda表达式和方法引用的目标。 编译错误为:。 语言设计者为什么要施加此限制? 问题答案: 自Lambda项目成立以来,这一直是一个重要的话题,并且引起了很多思考。Java语言首席架构师Brian Goetz强烈支持将lambda视为 功能 而非

  • 在java 8中,只有一个抽象方法的抽象类不是函数接口(JSR 335)。 这个是一个功能接口: 但这个抽象类不是: 因此,我不能将抽象类用作lambda表达式和方法引用的目标。 编译错误为:。 为什么语言设计者会施加这种限制?

  • 这是我的代码: 我知道表示引用,表示包含。 现在为什么<code>a。等于(b)为假? 它们中的每一个都具有相同的值。

  • 我在从Google云功能访问MongoDB Atlas时遇到问题。这给了我关于IP白名单的错误,但我已经将(无服务器VPC访问)IP地址范围和VPC网络对等IP地址范围添加到MongoDB白名单中。 我还使用谷歌云创建了MongoDB对等。 如果我允许(从任何地方访问),那么我的mongoDB开始正常工作,否则它会给出有关IP白名单的错误。 当我已经添加了两个IP时,我不确定我还应该向MongoD

  • 为了丰富运营体验,让开发者更好的体验积分商城功能,兑吧提支持更多的扩展功能 . 支持的扩展功能包含: 1. 游客用户唤醒登录 2. 自有虚拟商品充值 接口说明 充值接口API文档 通知接口API文档 3.加积分接口 接口说明 API文档 4.免登URL自定义参数 dcustom参数 transfer参数 signKeys参数 5. 会员等级功能 6.前置商品查询接口 7. 【秒杀商品】前置查询接口