更改枚举';在JAVA中使用此函数在ENUM类函数中设置s值
我有一个名为entry的Java枚举。我的目标是创建一个函数,将枚举值更改为另一个值。如果我的枚举值是X,我希望它变成Y,反之亦然。我试着写的代码在这里。但这不会编译,它说变量应该在我使用更改枚举';在JAVA中使用此函数在ENUM类函数中设置s值,java,oop,enums,syntax-error,Java,Oop,Enums,Syntax Error,我有一个名为entry的Java枚举。我的目标是创建一个函数,将枚举值更改为另一个值。如果我的枚举值是X,我希望它变成Y,反之亦然。我试着写的代码在这里。但这不会编译,它说变量应该在我使用this的地方出现 public enum Entry { X, O; public void switchEntry(){ this == Entry.X? this = Entry.O: Entry.X ; } } 另外,我想知道在我的ENUM类中是否可以
this
的地方出现
public enum Entry {
X,
O;
public void switchEntry(){
this == Entry.X? this = Entry.O: Entry.X ;
}
}
另外,我想知道在我的ENUM类中是否可以不使用额外的值变量。
非常感谢。如果这是一个愚蠢的问题,请道歉。您不能将一个枚举更改为另一个枚举。但是,您可以更新枚举变量以引用另一个枚举值
公共枚举条目{
X,,
O;
公共条目switchEntry(){
返回(this==X?O:X);
}
}
Entry e=Entry.X;
e=e.开关输入();
不能将一个枚举更改为另一个枚举。但是,您可以更新枚举变量以引用另一个枚举值
公共枚举条目{
X,,
O;
公共条目switchEntry(){
返回(this==X?O:X);
}
}
Entry e=Entry.X;
e=e.开关输入();
无法切换枚举本身的值。您可以做的是在类中使用枚举并在其中切换值:
类测试{
私有条目=条目.X;
公共条目(){
entry=entry==entry.X?entry.O:entry.X;
}
}
枚举项{
十、 O;
}
无法切换枚举本身的值。您可以做的是在类中使用枚举并在其中切换值:
类测试{
私有条目=条目.X;
公共条目(){
entry=entry==entry.X?entry.O:entry.X;
}
}
枚举项{
十、 O;
}
阻止你这么做的主要原因是这是最终的。您不能重新分配此
但是,即使您可以重新分配此
,您的方法也没有多大意义,因为只有两个条目
实例,即ever-Entry.X
和Entry.O
:
枚举类型除了由其枚举常量定义的实例外,没有其他实例。尝试显式实例化枚举类型是编译时错误
因此,如果你这样做了:
Entry.X.switchEntry();
从该点开始,您将无法访问最初由Entry.X
引用的对象!因为switchEntry
将Entry.X
设置为Entry.O
!现在Entry.X
和Entry.O
都指向同一个对象
如果我有一个包含getEntry
方法的类,该类返回一个私有字段entry
,而没有entry
的setter,该怎么办。如果调用(这是非常有效的Java代码),会怎么样
这会设置我的私有条目变量吗?如果是这样的话,您刚刚破坏了封装!或者它会做一些愚蠢的事情,比如getEntry()=Entry.O代码>
您是否看到允许您实现开关条目
的问题
无论如何,您应该编写一个返回Entry
实例的方法。然后,您可以在呼叫站点使用=
来分配您喜欢的任何内容。阻止您这样做的主要原因是此
是最终
。您不能重新分配此
但是,即使您可以重新分配此
,您的方法也没有多大意义,因为只有两个条目
实例,即ever-Entry.X
和Entry.O
:
枚举类型除了由其枚举常量定义的实例外,没有其他实例。尝试显式实例化枚举类型是编译时错误
因此,如果你这样做了:
Entry.X.switchEntry();
从该点开始,您将无法访问最初由Entry.X
引用的对象!因为switchEntry
将Entry.X
设置为Entry.O
!现在Entry.X
和Entry.O
都指向同一个对象
如果我有一个包含getEntry
方法的类,该类返回一个私有字段entry
,而没有entry
的setter,该怎么办。如果调用(这是非常有效的Java代码),会怎么样
这会设置我的私有条目变量吗?如果是这样的话,您刚刚破坏了封装!或者它会做一些愚蠢的事情,比如getEntry()=Entry.O代码>
您是否看到允许您实现开关条目
的问题
无论如何,您应该编写一个返回Entry
实例的方法。然后,您可以在调用站点使用=
分配您喜欢的任何内容。@Jens有时您可能希望在两个值之间切换,例如黑色
和白色
,就像一个棋盘,或者像一个电子开关一样打开和关闭。@Jens有时你可能想在两个值之间切换,比如像一个棋盘一样打开和关闭黑色和白色,或者像一个电子开关一样打开和关闭。