以下kotlin代码无法编译。它声称没有可用的方法'equals(Any?):Boolean'
override fun afterJob(jobExecution: JobExecution) {
if (jobExecution.exitStatus == ExitStatus.COMPLETED) {
//do stuff
}
}
ExitStatus(Spring Batch中的Java类)确实具有equals方法。看到这里:https://docs.spring.io/spring-batch/4.1.x/api/org/springframework/batch/core/ExitStatus.html
public class ExitStatus
extends java.lang.Object
implements java.io.Serializable, java.lang.Comparable<ExitStatus>
如果我将==更改为.equals,它将起作用。为什么会这样?
答案 0 :(得分:0)
这是因为,当kotlin看到运算符==
时,它仅查找.equals(other: Any?): Boolean
方法,而没有其他重载。如果类型不完全具有此重载,则在使用==
运算符时将找不到该重载。您的类型似乎还有其他一些重载,例如.equals(other: ExitStatus)
,在您显式调用它时会使用它。