类型不匹配错误,声明类列表

时间:2015-07-27 05:18:55

标签: list scala generics collections

  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中的类[?]?如果你也建议,我很感激   这样做的正确声明..

1 个答案:

答案 0 :(得分:0)

Scala

  • Any Scala 类的根。
  • AnyRef引用类型类的根,它从Any延伸。
  • AnyVal是所有值类型的根类。它从Any
  • 延伸
  • Null是所有引用类型的子类型。
  • Nothing 所有其他类型 的子类型,包括Null

因此,根据您的代码,您需要从Any扩展,包括AnyRef: reference typesAnyVal: 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
}