Scala:将参数名称和类型存储在哈希映射中

时间:2015-02-26 16:44:20

标签: scala types

我对scala比较陌生。我试图在哈希映射中维护一个包含属性列表及其类型的哈希映射。 我试过这样的事情

val attribTemplate = new mutable.LinkedHashMap[String, Class]

attribTemplate("attr1") = classOf[Int]

attribTemplate("attr2") = classOf[String]
斯卡拉不喜欢它。我想稍后对这种类型的信息进行模式匹配 我怎样才能做到这一点? 感谢

1 个答案:

答案 0 :(得分:5)

Class是通用的,Scala并不像Java那样允许你忽略这样的事实。以下内容可以正常使用:

val attribTemplate = new LinkedHashMap[String, Class[_]]
attribTemplate("attr1") = classOf[Int]
attribTemplate("attr2") = classOf[String]

然后:

scala> println(attribTemplate)
Map(attr1 -> int, attr2 -> class java.lang.String)

这几乎肯定是一个坏主意,而且它不是惯用的Scala。特别是如果您是Scala的新手,我建议您提出另一个关于您的特定用例的问题,并尽可能避免反思(以及可变性,如果可以的话)。