如何在java中返回枚举值
如何返回这样的枚举 在我用0如果否,1如果是和2如果其他返回int之前。但这不是一个好办法。那么应该怎么做呢。我的代码:如何在java中返回枚举值,java,enums,return,Java,Enums,Return,如何返回这样的枚举 在我用0如果否,1如果是和2如果其他返回int之前。但这不是一个好办法。那么应该怎么做呢。我的代码: class SomeClass{ public enum decizion{ YES, NO, OTHER } public static enum yourDecizion(){ //scanner etc if(x.equals('Y')){ return YES; } el
class SomeClass{
public enum decizion{
YES, NO, OTHER
}
public static enum yourDecizion(){
//scanner etc
if(x.equals('Y')){
return YES;
}
else if (x.equals('N')){
return NO;
}
else{
return OTHER;
}
}
}
我不知道“//scanner等”的作用,但是方法返回类型应该是decizion
:
publicstaticdecisionyourdecision(){…}
此外,您可以将Y
、N
等值添加到枚举常量中:
公共枚举决策{
是(“Y”)、否(“N”)、其他;
字符串键;
decizion(字符串键){this.key=key;}
//默认构造函数,仅用于其他情况,
//因为其他人不需要与密钥关联。
decizion(){}
静态决策getValue(字符串x){
如果(“Y”.equals(x)){返回YES;}
else如果(“N”.equals(x)){返回NO;}
如果(x==null){返回其他;}
else抛出新的IllegalArgumentException();
}
}
然后,在方法中,您只需执行以下操作:
publicstaticdecisionyourdecision(){
...
字符串键=。。。
返回decision.getValue(键);
}
将代码更改为:
class SomeClass{
public enum decizion {
YES, NO, OTHER
}
public static decizion yourDecizion(){
//scanner etc
if(x.equals('Y')){
return decizion.YES;
}
else if (x.equals('N')){
return decizion.NO;
}
else{
return decizion.OTHER;
}
}
}
注意:方法返回类型必须是
decizion
而不是enum
,并且decizion
应该有一个大写名称(所有类都应该有) 我认为您应该执行类似的操作,一个枚举类。然后可以添加任意多的类型,方法yourDecizion()将根据给定的参数返回枚举类型
公共枚举类{
是(0),
第(1)项,
其他(2);
私有整数码;
私有类(int代码){
this.code=代码;
}
公共int getCode(){
返回码;
}
公共静态类YourDecision(int x){
SomeClass ret=null;
for(SomeClass类型:SomeClass.values()){
if(type.getCode()==x)
ret=类型;
}
返回ret;
}
}
您可以通过以下方式获得值。这里有一个私有构造函数,它将初始化要设置的值,当调用实例方法值时,只需返回this.key
public class Application {
enum Day {
MONDAY("Monday"), TUESDAY("Tuesday");
String key;
Day(String str) {
key = str;
}
public String value() {
return this.key;
}
}
public static void main(String[] args) {
System.out.println(Day.MONDAY.value());
}
}
另一方面,根据java惯例,枚举应该以大写字母开头。枚举是一个(特殊类型的)类,因此您应该将其声明为方法的返回类型。顺便说一句,最好将其命名为
Decision
(这是一个类)。此外,您也可以使用switch
语句。就我个人而言,我倾向于避免switch
语句,以免破坏规则。这确实是个人意见的问题。我只是提到了一种可能性:)在JVM中,switch语句被优化为比if语句快得多:@Konstantin Yovkov这可能是一个很好的理由,但是我问自己,为什么退出使用switch
语句的选项?