我知道,在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()

10-06 10:23
查看更多