Я хочу создать класс, который будет служить оберткой для любого другого класса. Давайте назовем этот класс-оболочку Virtual
, и он используется следующим образом:
val x: String = "foo"
val y: Virtual[String] = new Virtual(x)
// any method that can be called on x can also be called on y,
// i.e., Virtual[String] <: String
// example:
y.toUpperCase // will change the wrapped string to an upper case
Это то, что я имею до сих пор:
class Virtual[T](obj: T) extends T {
// any Virtual specific methods here
}
Расширение параметра типа, похоже, не помогает ...
Другими словами:
Как я могу гарантировать, что методы, предоставляемые классом, упакованным в Virtual, также доступны и самим классом Virtual?