java - 从 Java 类调用时,Kotlin 数据类复制函数不起作用

标签 java kotlin data-class

也许我误解了 data 类的 copy 函数是如何工作的,或者可能存在错误,但以下是 copy 函数未按预期工作:

Kotlin :

data class A {
    public var x: String? = null
    public var y: String? = null
    public var z: B = B.ONE
}

enum class B {
    ONE
    TWO
    THREE
}

Java

A a1 = new A()
a1.setX("Hello")
a1.setY("World")
a1.setZ(B.TWO)

A a2 = a1.copy()
// a2.x is null
// a2.y is null
// a2.z is B.ONE

看起来 copy 只是创建了一个 A 的新实例,而不是复制值。如果我将变量放在构造函数中,则会分配值,但这与构造新实例没有什么不同。

最佳答案

好吧,我在文档中漏掉了这句话:

If any of these functions is explicitly defined in the class body or inherited from the base types, it will not be generated.

事实上,这使得 copy 并不比 Java 互操作的构造函数好。

关于java - 从 Java 类调用时,Kotlin 数据类复制函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28620782/

相关文章:

java - 在 ubuntu 12.04 中安装 netbeans 时出错

java - WriteListener (servlet 3.1) 语义

kotlin - Kotlin 中的通用对象

使用多重继承构建Python对象

firebase - Firestore 的 `documentSnapshot.toObject(className::class.java)` 如何重新分配在主构造函数中设置的 `val` 值?

java - 更改语言西类牙语标签以使用 iText PDFStamper 创建数字签名

java - 从 JTextArea 中删除边框

kotlin - JOOQ:通过记录更新时如何添加返回子句

安卓kotlin版本

kotlin - 如何更新实现通用接口(interface)的数据类