我定义了一个实现接口的枚举类型,如下所示:
public enum MyEnum implements MyInterface
{
val1, val2, val3;
private MyEnum() {}
private MyEnum(Parcel in)
{
readFromParcel(in);
}
public void readFromParcel(Parcel in)
{
MyEnum val = MyEnum.values()[in.readInt()];
// ??? How to I assign val to my current enum?
}
}
Run Code Online (Sandbox Code Playgroud)
如何访问当前枚举对象的值,以便我可以在其中进行赋值readFromParcel()?(请参阅代码中的评论)
pol*_*nts 14
在实例方法中,您可以enum简单地引用"当前对象" this.它以这种方式工作,因为enum常量是实际的对象,即a的实例class- 一种非常特殊的类型class,但class仍然是.(请注意,我提到这些是enum常量:在命名常量时,使用全部大写字母是Java中的约定.)
你的使用values()也非常奇特(更不用说它会表现得非常糟糕,因为每次调用都必须构建一个新数组).也许你想看看EnumMap,这是一种特殊的Map优化enum常量作为键.
如果你试图改变这些enum常量中包含的字段,那么你应该认真考虑重新设计.你通常应该尽量减少可变性,但让这些static单例变得可变并不是一个好的设计.而不是在enum常量本身内部具有这些可变字段,Map从常量到这些可变值将是更好的设计.
enumenum| 归档时间: |
|
| 查看次数: |
19830 次 |
| 最近记录: |