在Enumeration#Val类的Scaladoc中,我可以看到:“实现Value类型的类。可以重写此类以更改枚举的命名和整数标识行为。”我感到困惑:如何覆盖一个类?像
override class Val extends super.Val
这样的东西是不被允许的。override class Val extends super.Val
这样的东西是不被允许的。protected def Value(i: Int, name: String): Value = new Val(i, name)
Enumeration
将仅使用此工厂方法创建Val
实例。通常,这种模式需要程序员的自律,但可以通过将构造函数声明为私有来确保,从而强制程序员使用工厂方法。
object MyEnum extends Enumeration
中,可以定义一个内部类,例如:class Val(i: Int, name: String) extends super.Val(i, name)
,但它几乎不会覆盖Enumeration#Val,因为它根本没有被实例化。 - Jean-Philippe Pellet