Java 为什么Scala类在构造函数中不能有object类型的参数?

Java 为什么Scala类在构造函数中不能有object类型的参数?,java,scala,constructor,Java,Scala,Constructor,据我所知,对象只是单例实例。我想用单元格类型创建枚举类型,然后用包含坐标和枚举类型的构造函数对单元格进行分类。然而,这是做不到的,我也不知道为什么 object CellType extends Enumeration { val Empty, X, O = Value } 在另一个文件中: class Cell(column: Int, row: Int, cellType : CellType) { } // CellType is an object, and it doesn't

据我所知,对象只是单例实例。我想用单元格类型创建枚举类型,然后用包含坐标和枚举类型的构造函数对单元格进行分类。然而,这是做不到的,我也不知道为什么

object CellType extends Enumeration {
  val Empty, X, O = Value
}
在另一个文件中:

class Cell(column: Int, row: Int, cellType : CellType) {
} // CellType is an object, and it doesn't work!
您是否知道如何做到这一点,或者至少知道Scala禁止构造函数中的对象的原因

错误消息:

警告:3,37导入的“CellType”被永久隐藏 包模型导入中对象CellType的定义 de.htwg.model.CellType

CellType不是类型,而是对象。它实际上是其类型的唯一对象CellType.type。如果希望函数参数只能是此对象,可以使用CellType.type类型的参数。但是,如果它只能是CellType,为什么还要麻烦把它作为一个参数呢?最好直接使用对象,而不是将其作为参数传递

您可能需要的不是CellType的类型,而是其枚举值的类型,它恰好是CellType.Value

注意:我个人发现scala语言在同一级别上定义了特征和类(类型)以及对象(单例类型的实例),这相当令人不安。你不应该被这个明显的类比误导,真的把对象看成是价值,类和特征是类型。< CellType >不是一种类型,而是一个对象。它实际上是其类型的唯一对象CellType.type。如果希望函数参数只能是此对象,可以使用CellType.type类型的参数。但是,如果它只能是CellType,为什么还要麻烦把它作为一个参数呢?最好直接使用对象,而不是将其作为参数传递

您可能需要的不是CellType的类型,而是其枚举值的类型,它恰好是CellType.Value


注意:我个人发现scala语言在同一级别上定义了特征和类(类型)以及对象(单例类型的实例),这相当令人不安。你不应该被这个明显的类比误导,真的把对象看成是价值,类和特性是类型。< /p>任何错误信息?请把它们添加到问题中。好的观点!说明中添加的消息此错误消息来自添加的导入,可能来自IDE的自动导入功能,它会误导您问题的来源。这是因为IDE尝试导入类型CellType,因为您正在使用此标识符,而您的签名中有一个类型,而您的包中已经有这样的标识符作为值。是否有错误消息?请把它们添加到问题中。好的观点!说明中添加的消息此错误消息来自添加的导入,可能来自IDE的自动导入功能,它会误导您问题的来源。这是因为IDE尝试导入类型CellType,因为您正在使用此标识符,而您的签名中有一个类型,而包中已经有这样的标识符作为值。