我有一个带有2选项枚举的Java类。外部类具有枚举的成员实例。我有一个方法切换成员的选项。像这样:
public class Foo {
public enum BarEnum {
OPTION1, OPTION2;
}
private BarEnum barmember;
private void switchBarmember {
switch (barmember) {
case OPTION1: barmember = BarEnum.OPTION2; break;
case OPTION2: barmember = BarEnum.OPTION1; break;
}
}
}
我的问题是,有没有办法在不说BarEnum.
的情况下执行更改?换句话说,有没有办法使方法看起来像这样:
private void switchBarmember {
switch (barmember) {
case OPTION1: barmember = OPTION2; break;
case OPTION2: barmember = OPTION1; break;
}
}
如果没办法,请告诉我。谢谢!
答案 0 :(得分:2)
不完全正确,但这可行:
public class Foo {
public enum BarEnum {
OPTION1,
OPTION2;
private BarEnum switchValue ( )
{
switch( this )
{
case OPTION1:
return OPTION2;
case OPTION2:
return OPTION1;
}
throw new AssertionError("Should not be here");
}
}
private BarEnum barmember;
private void switchBarmember {
barmember = barmember.switchValue( );
}
}
答案 1 :(得分:1)
也许这样:)
class Foo {
public enum BarEnum {
OPTION1, OPTION2;
}
private BarEnum OPTION1=BarEnum.OPTION1;
private BarEnum OPTION2=BarEnum.OPTION2;
private BarEnum barmember;
private void switchBarmember() {
switch (barmember) {
case OPTION1: barmember = OPTION1; break;
case OPTION2: barmember = OPTION2; break;
}
}
}
答案 2 :(得分:1)
除非您创建@Pshemo之类的新字段,否则无法进行此操作。
如果此枚举位于单独的文件中,则可以静态导入枚举常量来实现此目的:
import static foo.TestEnum.ONE;
import foo.TestEnum;
public class StaticImportEnum {
public static void main (String[] args) {
TestEnum foo = ONE;
}
}
package foo;
public enum TestEnum {
ONE, TWO;
}
但是,您应谨慎使用静态导入,因为它们通常被视为bad practice。