0

考虑我想反序列化 JSON 字符串的情况:

def deserialize[T](json)

我可以提供我想在编写代码时显式应用函数的类

  class Person(name: String)
  deserialize[Person]("""{ "name": "Jennie" }""")

但是,如果我需要其他类怎么办,我必须在我的代码中提供它,再次编译。我希望我的程序更灵活,它可以采用一个配置文件,其中包含我要使用的类的名称。因此,当需要一个新类时,我只需要编写类定义,将其构建到另一个 jar 文件中,将其放入类路径中,然后重新启动程序。

    val config = ConfigLoader.load("config.txt")
    val className = config.getString("class-to-deserialize")
    deserialize[<from className to type>](json)

那么,有可能在scala中做到这一点吗?

4

1 回答 1

0

不。但是由于类型擦除,如果你有一个 function def deserialize[T](json: String),它的行为首先不能依赖,T你作为类型参数传递的内容并不重要。您可能只需要在最后添加一个演员表。

可能编写这样一个函数,它也接受一个隐式ClassTagTypeTag参数,在这种情况下,您只需要从类/类型名称创建参数,这是完全可能的:只需搜索有关此的问题。

于 2017-09-30T05:42:37.490 回答