比较器是功能接口,但是有两个抽象方法?

查看Comparator类; 它有两个抽象方法,为什么它可以是一个函数接口?

Comparator.java
package java.util;

@FunctionalInterface
public interface Comparator<T> {

  // abstract method
  int compare(T o1, T o2);

  // abstract method
  boolean equals(Object obj);

  // few default and static methods
}

功能接口定义
从概念上讲,功能接口仅具有一种抽象方法。 由于默认方法具有实现,因此它们不是抽象的。 如果接口声明了一个覆盖java.lang.Object的公共方法之一的抽象方法,则该方法也不计入接口的抽象方法计数,因为该接口的任何实现都将具有java.lang.Object或其他地方的实现。

回答

是的, Comparator是一个功能接口。 equals是覆盖java.lang.Object的公共方法之一的抽象方法,这不算作抽象方法。

boolean equals(Object obj);

Comparator只有一个抽象方法int compare(T o1, T o2) ,它满足功能接口的定义。

Comparator.java
package java.util;

@FunctionalInterface
public interface Comparator<T> {

  // abstract method
  int compare(T o1, T o2);

  // abstract method, overriding public methods of `java.lang.Object`
  // this doesn't count!
  boolean equals(Object obj);

  // few default and static methods
}

参考文献

翻译自: https://mkyong.com/java8/is-comparator-a-function-interface-but-it-has-two-abstract-methods/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值