sak*_*das 13 java enums inner-classes
我有一个非常具体的问题,与内部类有关.让我给你看一些示例代码:
class Foo {
MYOPTIONS temp;
public static enum MYOPTIONS {
OPTION1, OPTION2, OPTION3;
}
}
Run Code Online (Sandbox Code Playgroud)
所以这个枚举在Foo类中.现在我要做的是将temp变量设置为三个选项之一,但是在类Foo之外执行,比如说来自一个名为External的类.不幸的是我无法使用set方法来执行此操作,因为External.setTemp (MYOPTIONS.OPTION1)无效,因为枚举在类外部不可见.所以我唯一能想到的就是在Foo类中有三个方法:
public void setTempOption1 () {this.temp=MYOPTIONS.OPTION1;}
public void setTempOption2 () {this.temp=MYOPTIONS.OPTION2;}
public void setTempOption3 () {this.temp=MYOPTIONS.OPTION3;}
Run Code Online (Sandbox Code Playgroud)
显然,另一种选择是更改枚举,而不是将其作为内部类.我还缺少其他选择吗?谢谢
use*_*own 24
class ContainsInnerEnum {
MYOPTIONS temp;
public enum MYOPTIONS {
OPTION1, OPTION2, OPTION3;
}
}
class EnumTester {
public void test () {
ContainsInnerEnum ie = new ContainsInnerEnum ();
// fail:
// ie.temp = MYOPTIONS.OPTION1;
// works:
ie.temp = ContainsInnerEnum.MYOPTIONS.OPTION1;
}
}
Run Code Online (Sandbox Code Playgroud)
MYOPTIONS的全名包含嵌入类名.
| 归档时间: |
|
| 查看次数: |
40617 次 |
| 最近记录: |