def getValueAndItsType() : List[ (AnyRef, Class[_]) ] = {
val dataSet1 = ("some string data", classOf[String])
val dataSet2 = (new Thread(), classOf[Thread])
val dataSet3 = (new NullPointerException(), classOf[NullPointerException])
val dataSet4 = (5, classOf[Int])
val list = List(dataSet1, dataSet2, dataSet3, dataSet4)
list
}
类型不匹配;发现: List [(Any,Class [_>:Int with NullPointerException with Thread with 字符串])]必需:列表[(AnyRef,Class [_])]
If dataSet4 is removed from List, the compile time error disappears
请建议,班级[_]出了什么问题。不是吗? 相当于java中的类[?]?如果你也建议,我很感激 这样做的正确声明..
答案 0 :(得分:0)
在 Scala :
Any
是 Scala 类的根。AnyRef
是引用类型类的根,它从Any
延伸。AnyVal
是所有值类型的根类。它从Any
Null
是所有引用类型的子类型。Nothing
是 所有其他类型 的子类型,包括Null
因此,根据您的代码,您需要从Any
扩展,包括AnyRef: reference types
和AnyVal: values types
。
def getValueAndItsType() : List[ (Any, _ <: Any) ] = {
val dataSet1 = ("some string data", classOf[String])
val dataSet2 = (new Thread(), classOf[Thread])
val dataSet3 = (new NullPointerException(), classOf[NullPointerException])
val list = List(dataSet1, dataSet2, dataSet3)
list
}