Class Scala:泛型类可以实现其参数吗?

Class Scala:泛型类可以实现其参数吗?,class,scala,generics,dynamic,proxy,Class,Scala,Generics,Dynamic,Proxy,我对斯卡拉还是个新手。 我试图定义一个应该可用的泛型类Proxy[T] 在任何需要T实例的地方。 所以我在想类似的事情 class Proxy[T] extends Dynamic with T 但这并不能在Scala中编译(我得到“需要类类型,但找不到类类型”)。 所以我的问题的答案似乎是“不”,但在我看来仍然很奇怪 在Scala中是否有可能绕过这个问题,或者我是否遗漏了一个重要的概念点 我发现最类似于我所需要的东西是scala.ref.Reference[T],但是它扩展了(()=>T)

我对斯卡拉还是个新手。 我试图定义一个应该可用的泛型类
Proxy[T]
在任何需要T实例的地方。 所以我在想类似的事情

class Proxy[T] extends Dynamic with T
但这并不能在Scala中编译(我得到“需要类类型,但找不到类类型”)。 所以我的问题的答案似乎是“不”,但在我看来仍然很奇怪

在Scala中是否有可能绕过这个问题,或者我是否遗漏了一个重要的概念点

我发现最类似于我所需要的东西是scala.ref.Reference[T],但是它扩展了(()=>T) 并且不能用在需要T的地方(至少这是我的理解)。
我想这可以解决我的问题,但这似乎有点过分。

我认为不可能实现你所描述的


您可以使用运行时代理(参见java.lang.reflect.Proxy)。另一种选择是CGLIB。

以下是您可以做的事情:

class MyProxy[T](val self:T)
object MyProxy {
  implicit def unwrap[T](p:MyProxy[T]):T = p.self
}
现在,您可以在需要
T
的任何地方使用
MyProxy[T]
。编译器将找到
隐式
“unwrap”函数并调用它
MyProxy
不是
T
,但它可以转换为
T