我需要解析数十个JSON片段,对于每个片段,我需要获得正确解析器的实例。我的想法是创建一个配置文件,在其中写入要为每个解析器实例化的类的名称(一种地图URL - >解析器)。回到你的解决方案,如果我有一个指向Any的指针,我无法调用我在每个解析器中实现的方法。我认为这是一个非常普遍的问题,有一套完善的解决方案,但我不知道最佳做法是什么。
我真的没有Java,反射,类加载等所有东西的经验。所以, 任何人都可以为我写下以下方法的主体吗?我需要获取一个以String形式传递的类的实例(构造函数不需要参数,至少到目前为止......)
def createInstance(clazzName: String) = {
// get the Class for the given clazzName, e.g. "net.my.BeautifulClazz"
// instantiate an object and return it
}
谢谢,像往常一样......
答案 0 :(得分:1)
有一个非常简单的答案:
scala> def createInstance(clazzName: String) = Class.forName(clazzName).newInstance
createInstance: (clazzName: String)Any
scala> createInstance("java.lang.String")
res0: Any = ""
如果它适合你,一切都很好。如果没有,我们必须查看你的类加载器。这通常是事情变得肮脏的时候。
根据您的目的,请查看: