【发布时间】:2015-09-07 07:29:56
【问题描述】:
在启动时,我正在读取 .xml 文件并希望在运行时将数据存储在对象中。
问题是,我不想手动指定每个字段,而是使用 Map 来存储不同的值。
但不是使用“String”或像“Node”这样的 .xml 类或类似的东西,我希望我的 Map 是类型:
Map[StringKey, Wrapper] 其中 Wrapper 可以保存 一个 Int、一个浮点数或一个字符串。
现在是这样的
class Wrapper(val: AnyVal)
{
def this(val: String) = this(val)
def this(val: Int) = this(val)
def this(val: Float) = this(val)
}
这不是我真正想要的。我想 100% 确定它是 String、Int 还是 Float。
我可以编写一个空的构造函数和 setter 方法,但这很丑。
另一种选择是将所有内容都转换为 String -> 不是我想要的。
每当我从 Map 中检索/获取值时,我都希望它手动转换为它的类型。就像那里的 Int 一样:
val size = cache.get("size").actualType
应该自动是一个 Int(也就是说,如果带有键“size”的 Wrapper 持有一个 Int)。
有什么可以使用的吗,或者我可以巧妙地使用 Enumeration 来完成任务吗?
也许有更好的解决方案,比如一些我不习惯的 FP 概念(尽管这似乎是 OOP 的领域)
【问题讨论】: