我想创建一个接受类型参数的方法,显然在其构造函数中没有参数,并返回使用该构造函数构造的虚拟对象。基本上是某种工厂模式。
代码示例:
trait Model
class A extends Model
class B extends Model
def dummy[T <: Model] = new T // Fails compilation with "class type required but T found"
dummy[A] // Returns an instance of A
dummy[B] // Returns an instance of B
答案 0 :(得分:4)
这可以使用旨在克服擦除的ClassManifest
来完成:
def dummy[T <: Model : ClassManifest] = classManifest[T].erasure.newInstance
至于在没有反射的编译时这样做,我想可以使用scala 2.10宏来完成。