次のようなジェネリック型があるとします。
class GenericEchoer[T <: Any] {
var content: T = _
def echo: String = "Echo: " + content.toString
}
次に、次のように GenericEchoer[T] の機能を拡張できる mixin を作成できます。
trait Substitution[T <: AnyRef] extends GenericEchoer[T] {
def substitute(newValue: T) = { content = newValue }
}
これらを定義したら、次の方法で型をインスタンス化できます。
val echoer = new GenericEchoer[Int] with Substitution[Int]
私の質問は、ミックスインで型パラメーターを省略できるように、同様の機能を実装する方法ですか? つまり、次の行で同じ型をインスタンス化できるようにしたいと考えています。
val echoer = new GenericEchoer[Int] with Substitution
ただし、置換は基になる型パラメーターを「認識しない」ため、これは機能しません。