kotlin - 为什么 Kotlin double equals 找不到 .equals 方法?
问题描述
下面的 kotlin 代码无法编译。它声称没有方法'等于(任何?):布尔'可用
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 它可以工作。这是为什么?
解决方案
那是因为当 kotlin 看到 operator 时==
,它只寻找.equals(other: Any?): Boolean
方法,而不是任何其他重载。如果该类型没有恰好有这个重载,则在使用==
运算符时将找不到它。您的类型似乎还有其他重载,例如.equals(other: ExitStatus)
,当您显式调用它时会使用它。
推荐阅读
- javascript - Apollo RESTDataSource 调用其他 RESTDataSource?
- math - 概率 - 使用贝叶斯规则的流感测试
- r - 连接具有不同观察数量的两个数据集
- flutter - Flutter 库托管
- java - 春季数据中的多对多关系存在问题。它改变了我的桌子
- visual-studio - 调试控制台文本为黄色
- python - 按属于某个数字范围的每个条目绘制数据框列?
- jooq - 如何排除特定的 DB 对象,使其免于为其生成 JPA 注释?
- sql - 我将在我的方案中的表上授予选择的角色分配给其他用户。如果我删除此表并通过备份恢复它会发生什么?
- css - 使用css围绕中心文本位置旋转svg文本