我有第三方A班:
class A {
def methodA = ...
}
Run Code Online (Sandbox Code Playgroud)
我想使用use trait将新方法methodT添加到一个实例中A
trait Atrait[...] {
def methodT = {
// how to get a reference of instance of type A?
}
}
Run Code Online (Sandbox Code Playgroud)
这个方法T特定于某些情况,所以我应该在特征中使用约束.但我无法理解.另外,如何A在特征中调用方法的实例?
UPDATE
特质不会这样.查看替代解决方案的答案.
这是将方法添加到第三方类的标准模式:
class A
implicit class ExtendedA(val a: A) extends AnyVal {
def methodT: Unit = { println("called A.methodT") }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
val a = new A
a.methodT
Run Code Online (Sandbox Code Playgroud)