繁体   English   中英

scala案例类复制方法是从java代码中看不到的

[英]scala case class copy method is unseen from java code

我有一个scala案例类。 我试图用java中的obj.copy()复制它,但我没有看到任何这样的方法

我目前所做的是一个解决方法:

  // Hack, copy was not visible from java code.
  def doCopy(): MyCaseClass = {
    return this.copy()
  }

现在可以从java中看到doCopy()。 有没有比这个黑客更好的方法呢?

case class没有方法copy()

让我们看看在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中没有默认参数,因此您必须指定所有参数。 因此,方法copyJava是无用的。

case class应该是不可变的,因此您无需在不更改字段的情况下进行copy

而不是obj2= obj.copy()你可以使用obj2= obj

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM