我有一个 Scala 案例类。 我正在尝试使用 obj.copy() 从 Java 复制它,但我没有看到任何此类方法
我目前所做的是一种解决方法:
// Hack, copy was not visible from java code.
def doCopy(): MyCaseClass = {
return this.copy()
}
现在 doCopy() 在 java 中是可见的。 有比这个 hack 更好的方法吗?
最佳答案
案例类
中没有方法copy()
。
让我们看看案例类
中生成的所有方法:
$ 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
应该是不可变的,因此您无需在不更改字段的情况下复制
它。
您可以使用 obj2= obj
而不是 obj2= obj.copy()
。
关于java - 从 Java 代码中看不到 Scala 案例类复制方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16386886/