加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 10:04:02 所属栏目:安全 来源:网络整理
导读:我有一个 scala案例类. 我试图用 java中的obj.copy()复制它,但我没有看到任何这样的方法 我目前所做的是一个解决方法: // Hack,copy was not visible from java code. def doCopy(): MyCaseClass = { return this.copy() } 现在可以从java中看到doCopy().
我有一个 scala案例类.
我试图用 java中的obj.copy()复制它,但我没有看到任何这样的方法

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

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

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

解决方法

案例类中没有方法copy().

让我们看看在case类中生成的所有方法:

$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中没有默认参数,因此您必须指定所有参数.因此,方法复制在Java中是无用的.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读