当前位置: 首页 > 面试题库 >

FunctionalInterface比较器有2种抽象方法

程沛
2023-03-14
问题内容

学习Java 8 Lambda,只是想知道编译器如何知道Comparator中的哪种方法用于lambda表达式?它似乎不是SAM接口?它有2种抽象方法:

@FunctionalInterface
public interface Comparator<T> {
    int compare(T o1, T o2);
    boolean equals(Object obj);
}

问题答案:

equals()不是抽象方法。此方法重写Object.equals(Object),并且仅使Comparator接口能够将javadoc附加到该方法,解释了比较器应如何实现equals()

参见FunctionalInterface的javadoc:

如果接口声明的抽象方法覆盖了java.lang.Object的公共方法之一,则该方法也不会计入接口的抽象方法计数,因为该接口的任何实现都将具有java.lang.Object或其他地方的实现。



 类似资料:
  • 学习Java8个Lambda,只是想知道编译器如何知道比较器中的哪个方法用于lambda表达式?它似乎不是SAM接口?它有两个抽象方法:

  • 问题内容: 是否有任何方法可以接收2个JSON对象并将其进行比较以查看是否有任何数据已更改? 编辑 在审查评论之后,需要进行一些澄清。 JSON对象定义为 “一组无序的名称/值对。一个对象以{(左括号)开始,以}(右括号)结束。每个名称后面都带有:(冒号),名称/值对之间以,(逗号)分隔。 ”。- json.org 我的目标是能够简单地比较2个JSON对象文字。 我不是javascript专家,所

  • 在Java8中,引入了注释来表示任何只有一个抽象方法作为函数接口的接口。引入它的原因之一是指示用户(程序员),lambda表达式可以在函数接口的上下文中使用。 接口用注释。但是,两种方法是抽象的。 和 在FunctionInterface的文档中,明确提到 从概念上讲,函数接口只有一个抽象方法。 方法在这里不是被认为是抽象的吗?

  • 本文向大家介绍PostgreSQL 分页查询时间的2种比较方法小结,包括了PostgreSQL 分页查询时间的2种比较方法小结的使用技巧和注意事项,需要的朋友参考一下 数据库中存了3000W条数据,两种分页查询测试时间 第一种 SELECT * FROM test_table WHERE i_id> 1000 limit 100; Time: 0.016s 第二种 SELECT * FROM te

  • 问题内容: 我需要编写一个比较器,它采用类型A的对象A和类型B的对象B。这两个对象不是公共对象的扩展。它们的确不同,但是我需要通过其中的通用字段来比较这两个对象。我必须使用比较器接口,因为对象存储在Set中,并且在必须对CollectionUtils执行操作之后。我在Google上搜索了一下,发现了Comparator的解决方案,但只有相同的类型。 我试图朝这个方向实施思考,但是我不知道我是否在正

  • 我需要写一个比较器,取一个a类型的对象a和一个B类型的对象B。这两个对象不是一个公共对象的扩展。他们确实是不同的,但我需要比较这两个对象在它的共同领域。我必须使用比较器接口,因为对象存储在Set中,之后我必须使用CollectionUtils进行操作。我搜索了一点点,我用比较器找到了解决方案,但只有相同的类型。 TXS 附注:我在不同的集合中添加两个对象: 之后我会这样想: