scalaのケースクラスにコピーがどのように実装されているかわかりません。
何とか確認できますか?
私はIntellijが実装を指示することはできましたが、ジャンプしたくないので、理由がわかりません:/
回答:
回答№1の場合は3を使用してscalaケースクラスの出力を検査できます。 scalac -print ClassName.scala
、として copy
実際には、コンパイラによって生成されたメソッドです。
これが与えられた例です:
case class Test(s: String, i: Int)
これは、ノイズを除去した後の出力です copy
:
case class Test extends Object with Product with Serializable {
private[this] val s: String = _;
def s(): String = Test.this.s;
private[this] val i: Int = _;
def i(): Int = Test.this.i;
def copy(s: String, i: Int): common.Test = new common.Test(s, i);
def copy$default$1(): String = Test.this.s();
def copy$default$2(): Int = Test.this.i();
}