2

Scala でのクローン作成に問題があります。任意の型 T のオブジェクトを複製することは可能ですか? このようなもの:

import collection.immutable.Stack

object Tester extends App {
  trait Grand[T <: Cloneable] {
    val stack = Stack[T]()
    val h: T

    def snapshot() {
      stack push h.clone().asInstanceOf[T]
    }
  }
}

ただし、次のようにスローされます:
scala: クラス Object のメソッド クローンは T で
アクセスできません 保護されたメソッド クローンへのアクセスは許可されません。

何がうまくいかないのですか?

4

2 に答える 2

2

この質問についてアドバイスを受けました。このような状況では、構造型付けを使用するのが最善の方法です。

trait Grand[T <: {def cloneObject: T}]

ユーザーコードは次のようになります。

case class Person(name: String) {
  def cloneObject = copy()
}

object Roll extends App with Grand[Person] {
...
}
于 2013-04-11T07:55:01.453 に答える