将类作为值传递并创建实例

Mar*_*rau 6 scala

我有很多共同的基本特征.我有一个函数需要创建这些类之一的实例的新实例,但哪一个只在运行时知道.

是否可以将此类作为参数传递并在Scala中在运行时创建实例?

我甚至不确定答案是最好的方法,但目前这是我唯一能想到的.

Bri*_*new 4

您可以这样传递值:

myFunc(classOf[myObj])
Run Code Online (Sandbox Code Playgroud)

到带有签名的方法

def myFunc(clazz : AnyRef)={ ...
Run Code Online (Sandbox Code Playgroud)

但这闻起来很糟糕。您要么正在考虑实现工厂模式,要么更好的是您可以使用多态性并简单地执行以下操作:

myObj.myFunc
Run Code Online (Sandbox Code Playgroud)

因为您的功能取决于所涉及的类。