我对Scala很新。
我试图定义一个应该可用的泛型类Proxy[T]
在任何预期T实例的地方。
所以我在想像
class Proxy[T] extends Dynamic with T
但是这不会在Scala中编译(我得到"需要类类型,但是T找到")。 所以我的问题的答案似乎是" No",但对我来说看起来仍然很奇怪。
Scala有可能绕过这个问题,还是我错过了一个重要的概念位?
我发现我需要的最相似的东西是scala.ref.Reference [T],但是它扩展了(()=> T) 并且不能用于预期T的地方(至少这是我的理解)。 我认为https://code.google.com/p/classgenerator/可以解决我的问题,但似乎有点过分。
答案 0 :(得分:1)
我认为没有可能实现你所描述的目标。
您可以使用的是运行时代理(请参阅java.lang.reflect.Proxy)。另一种选择是CGLIB。
答案 1 :(得分:0)
您可以做以下事情:
class MyProxy[T](val self:T)
object MyProxy {
implicit def unwrap[T](p:MyProxy[T]):T = p.self
}
现在,您可以在需要MyProxy[T]
的任何地方使用T
。编译器会找到implicit
" unwrap"功能并调用它。 MyProxy
不是T
,但可以转换为T
。