扩展函数对equals(Any?)的覆盖:布尔值

时间:2019-08-11 08:35:54

标签: kotlin

Java依赖项定义了一些没有equals方法的值类。他们确实应该实现它,但是没有实现。

fun OrderBookEntry.equals(other: Any?): Boolean = 
  EqualsBuilder.reflectionEquals(this, other)

我想通过扩展实现等式

public open fun equals(other: Any?): Boolean

但是我得到了警告

  

扩展名被成员隐藏。 {{1}}

,扩展方法无效。

我可以超越平等行为吗?

1 个答案:

答案 0 :(得分:2)

您不能使用扩展功能覆盖方法。

fun OrderBookEntry.foo(other: Any?): Boolean
在Java中,

等效于拥有诸如

的静态辅助方法。
public static boolean foo(OrderBookEntry fakeThis, Object other)

扩展函数是静态解析的,不能隐藏成员方法,并且必须显式导入(从另一个程序包调用时),以便可用。