我想创建一个生成特征实现的方法。例如:
trait Foo {
def a
def b(i:Int):String
}
object Processor {
def exec(instance: AnyRef, method: String, params: AnyRef*) = {
//whatever
}
}
class Bar {
def wrap[T] = {
// Here create a new instance of the implementing class, i.e. if T is Foo,
// generate a new FooImpl(this)
}
}
我想像这样动态生成FooImpl
类:
class FooImpl(val wrapped:AnyRef) extends Foo {
def a = Processor.exec(wrapped, "a")
def b(i:Int) = Processor.exec(wrapped, "b", i)
}
手动实现每个特征不是我们想要的(很多样板文件),所以我希望能够在编译时生成 Impl 类。我正在考虑对类进行注释,并且可能编写一个编译器插件,但也许有更简单的方法?任何指针将不胜感激。