kotlin - 为什么 Kotlin double equals 找不到 .equals 方法?

标签 kotlin spring-batch

以下 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,它就会起作用。这是为什么?

最佳答案

那是因为当 kotlin 看到运算符 == 时,它只会寻找 .equals(other: Any?): Boolean 方法,而不是任何其他重载。如果该类型恰好没有此重载,则在使用 == 运算符时将找不到它。您的类型似乎有一些其他重载,例如 .equals(other: ExitStatus),当您显式调用它时会使用它。

More on Kotlin operator overloading.

关于kotlin - 为什么 Kotlin double equals 找不到 .equals 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56653315/

相关文章:

java-8 - 使用多个条件过滤列表

kotlin - 安科的复合重力

java - 使用 Gradle 在 Spring Boot 项目中引用来自 Kotlin 测试的 Java 代码时出现未解析的引用

mysql - JdbcTemplate - SQLWarning 忽略 : SQL state '22007' , 错误代码 '1292' ,消息 [截断的不正确的 DOUBLE 值: 'stepExecutionContext[toId]' ]

java - 动态创建作业的 Spring 批量测试

java - Spring Batch 子句中的准备语句

java - 使用 Spring Batch 从数据库表中部分提取

java - Spring 批处理 MapJobRepositoryFactoryBean

android - 使用kotlin更新特定时期的firebase实时数据库

android - travis ci 构建失败 - 原因 : PermGen space