我有一个库,其中 anabstract class Base[T]超过了用户提供的类型T。有许多特定Base[T]的子类,有些是过度类型T和S,比如Specific[T, S],但这无关紧要。用户当然可以在创建和实例时指定任何T内容,但我想将其视为T具有特征AdditionalAbilities,或者换句话说,我想用AdditionalAbilities. 我怎么能在 Scala 中做到这一点?我希望这个问题的标题是正确的。
示例(可能在语法上不正确)
class Specific[T **with trait Additional**]() extends Base[T](){
def doSomething() : T = {
val something = new T()
something.ability(2)
println(something.additional)
something
}
}
trait Additional{
var additional : Integer
def ability(i : Integer) : Unit = {
additional = i
}
}
可以与任何T.