我有很多共同的基本特征.我有一个函数需要创建这些类之一的实例的新实例,但哪一个只在运行时知道.
是否可以将此类作为参数传递并在Scala中在运行时创建实例?
我甚至不确定答案是最好的方法,但目前这是我唯一能想到的.
您可以这样传递值:
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)
因为您的功能取决于所涉及的类。