在我的 scala 代码中,我希望能够实例化一个新类。例如,假设我有以下代码:
class Foo { def foo=10 }
trait Bar { val bar=20 }
理想情况下,我希望能够执行以下操作:
def newInstance[A <: Foo] = { new A with Bar }
newInstance[Foo]
但是,这当然行不通。我尝试使用反射来实例化一个类,但似乎我只能实例化一个新类(而不是与特征混合)。我认为可以使用宏来完成这项工作,但我什至不确定从哪里开始。
我想要做的就像下面的 Ruby 代码:
class SomeClass
def create
self.class.new
end
end
class Other < SomeClass
end
Other.new.create # <- this returns a new Other instance
可能吗?