将整数映射到对象会给出错误“无法解析重载的构造函数”

时间:2019-09-12 12:06:38

标签: scala oop

我正在尝试将整数映射到Scala中的对象。我是Scala的新手,所以我遇到此错误“无法解析重载的构造函数Item”。请帮助解决此错误。

object Main extends App {
  override def main(args: Array[String]): Unit = {
    val listMap1: ListMap[Int, Item] = ListMap(1 -> new Item("mobile", 25000, 1) )

  }
}

此部分出现此错误:

new Item("mobile", 25000, 1)

这是我的课程项目:

class Item (name: String, price: Int, id: Int){
  def this(name: String, price: Int, id: Int) = {
    this(name,price,id);
  }
}

1 个答案:

答案 0 :(得分:0)

在Scala中,描述类时放在括号内的内容是构造函数。然后,您用def this...重载它,并且由于具有相同的签名,编译器无法确定要使用哪个签名。

请注意,在这种情况下,case class提供了很多不错的语法糖。最好的方法是做类似的事情

case class Item(name: String, price: Int, id: Int)

val map: Map[Int, Item] = Map[Int, Item](1 -> Item("mobile", 25000, 1))