我有一个 scala 案例类。我正在尝试使用 java 中的 obj.copy() 复制它,但我没有看到任何这样的方法
我目前所做的是一种解决方法:
// Hack, copy was not visible from java code.
def doCopy(): MyCaseClass = {
return this.copy()
}
现在 doCopy() 在 java 中是可见的。有没有比这个 hack 更好的方法呢?
我有一个 scala 案例类。我正在尝试使用 java 中的 obj.copy() 复制它,但我没有看到任何这样的方法
我目前所做的是一种解决方法:
// Hack, copy was not visible from java code.
def doCopy(): MyCaseClass = {
return this.copy()
}
现在 doCopy() 在 java 中是可见的。有没有比这个 hack 更好的方法呢?
中没有方法copy()
。case class
让我们看看生成的所有方法case class
:
$ echo 'case class T(a1: String, a2: Int)' > test.scala
$ scalac -Xprint:typer test.scala
你会发现这个方法:
<synthetic> def copy(a1: String = a1, a2: Int = a2): T = new T(a1, a2);
中没有默认参数Java
,因此您必须指定所有参数。所以方法copy
在Java
.
case class
应该是不可变的,所以你不需要copy
改变字段。
而不是obj2= obj.copy()
你可以使用obj2= obj
.