
这个怎么样?它要求您实际上
add为每个新值调用一个方法,但
values返回正确的类型。
abstract class MyEnum{ type Value //define me to be the value type for this MyEnum private var _values:List[Value] = Nil def values = _values protected def add(newValue:Value) = { _values = newValue::_values newValue }}object DayOfWeek extends MyEnum{ class Value(val dayNum:Int) val SUNDAY = add(new Value(1)) val MonDAY = add(new Value(2)) val TUESDAY = add(new Value(3)) val WEDNESDAY = add(new Value(4)) val THURSDAY = add(new Value(5)) val FRIDAY = add(new Value(6)) val SATURDAY = add(new Value(7))}您现在可以打电话
println(DayOfWeek.values map (_.dayNum))
如果您需要在不同对象上具有不同方法定义的单例对象,则可以创建如下的匿名类:
add(new Value{ override def dayNum=8 })欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)