我有一个库,其中 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
.