Enum
基本信息
| 属性 | 值 |
|---|---|
| 路径 | mrtjp.core.util.Enum |
| 类型 | trait |
| 源码 | src/main/scala/mrtjp/core/util/Enum.scala |
Scala 侧的「Java enum 替代品」:用 trait + 内部类实现可扩展的枚举,
并附带按位集合 ValSet 支持集合运算。
结构
| 成员 | 说明 |
|---|---|
type EnumVal <: Value |
枚举值类型,由实现方指定 |
values |
当前所有值(Vector[EnumVal]) |
Value |
枚举值基类;final val ordinal = addEnumVal(getThis),构造时自动登记 |
Value.name |
需实现的名字 |
Value.equals |
同一 outer + 同 ordinal 视为相等 |
Value.hashCode |
31 * (getClass.## + name.## + ordinal) |
Value.compare |
按 ordinal 比较 |
Value.+ / ++ |
构造 ValSet |
Value.until(v) / to(v) |
构造 ordinal 区间集合 |
ValSet |
基于 immutable.BitSet 的有序集合 |
isDefinedAt(idx) / apply(idx) |
越界时 apply 返回 null(不是抛异常) |
缺陷
apply(ordinal)越界时返回null.asInstanceOf[EnumVal]——静默返回 null, 后续访问会 NPE 且堆栈难以定位。ValSet.keysIteratorFrom(start)直接throw new NotImplementedError("Please report this crash")—— 任何基于keysIteratorFrom的SortedSet操作都会崩。
相关条目
- ItemDefinition / ItemCore — 典型使用方
- Colors — 典型使用方