0
我正在嘗試複製Scala中顯示的here的Java枚舉。這是我到目前爲止有:在Scala枚舉中迭代重寫的值
object DataType extends Enum {
val BYTE = CCSValue(classOf[Byte], classOf[java.lang.Byte], "byte")
val SHORT = CCSValue(classOf[Short], classOf[java.lang.Short], "short")
val INTEGER = CCSValue(classOf[Int], classOf[Integer], "int")
val LONG = CCSValue(classOf[Long], classOf[java.lang.Long], "long")
val CHARACTER = CCSValue(classOf[Char], classOf[Character], "char")
val FLOAT = CCSValue(classOf[Float], classOf[java.lang.Float], "float")
val DOUBLE = CCSValue(classOf[Double], classOf[java.lang.Double], "double")
val BOOLEAN = CCSValue(classOf[Boolean], classOf[java.lang.Boolean], "boolean")
class PRDataType(val primitive: Class[_], val reference: Class[_], name: String) extends Val(nextId, name)
protected final def CCSValue(primitive: Class[_], reference: Class[_], name: String): PRDataType = new PRDataType(primitive, reference, name)
private val CLASS_MAP = new mutable.HashMap[Class[_], PRDataType]()
for (item: PRDataType <- values.toArray) {
CLASS_MAP.put(item.primitive, item)
CLASS_MAP.put(item.reference, item)
}
}
然而,當我在斯卡拉REPL執行此,我得到以下錯誤:
location\of\script\test.scala:18: error: type mismatch;
found : Main.$anon.DataType.PRDataType => Option[Main.$anon.DataType.PRDataType]
required: Main.$anon.DataType.Value => ?
for (item: PRDataType <- values.toArray) {
^
我是不是真的很傻?我是新來的Scala,這是我能找到的最好的方式來定義不僅僅是一個id和一個字符串的枚舉常量。
的偉大工程。謝謝! – TheReturningVoid