gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:58:36 24 4
gpt4 key购买 nike

以下 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com