我对scala比较陌生。我试图在哈希映射中维护一个包含属性列表及其类型的哈希映射。 我试过这样的事情
val attribTemplate = new mutable.LinkedHashMap[String, Class]
attribTemplate("attr1") = classOf[Int]
attribTemplate("attr2") = classOf[String]
斯卡拉不喜欢它。我想稍后对这种类型的信息进行模式匹配
我怎样才能做到这一点?
感谢
答案 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的新手,我建议您提出另一个关于您的特定用例的问题,并尽可能避免反思(以及可变性,如果可以的话)。