我知道,在Kotlin中,类将具有一个equals和自动创建的哈希码,如下所示:
data class CSVColumn(private val index: Int, val value: String) {
}
我的问题是,有没有一种方法可以使实现仅使用这些属性之一(例如
index
)而无需自己编写代码。原来非常简洁的类现在看起来像这样:data class CSVColumn(private val index: Int, val value: String) {
override fun equals(other: Any?): Boolean {
if (this === other) {
return true
}
if (javaClass != other?.javaClass) {
return false
}
other as CSVColumn
if (index != other.index) {
return false
}
return true
}
override fun hashCode(): Int {
return index
}
}
在带有Lombok的Java中,我可以执行以下操作:
@Value
@EqualsAndHasCode(of="index")
public class CsvColumn {
private final int index;
private final String value;
}
如果有一种方法可以告诉Kotlin类似的东西,那就太酷了。
最佳答案
从Data Classes文档中,您可以得到:
因此,您必须手动或在Kotlin编译器插件的帮助下实现equals()
和hashCode()
。