Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以可读的方式使用枚举_Java_Enums - Fatal编程技术网

Java 以可读的方式使用枚举

Java 以可读的方式使用枚举,java,enums,Java,Enums,如果我有以下静态 private static String STATURDAY = "Saturday"; 我可以以可读的方式使用它: myMethod(SATURDAY); 在这种情况下,为了类型安全性,枚举更好。但是,如果使用枚举,则可读性较差: myMethod(Week.SATURDAY.toString()); 有没有一种方法可以以可读的方式使用枚举?使您的方法接收枚举值,而不是字符串: myMethod(Week.SATURDAY); 这就是enum之所以有用的原因,因为它

如果我有以下静态

private static String STATURDAY = "Saturday";
我可以以可读的方式使用它:

myMethod(SATURDAY);
在这种情况下,为了类型安全性,枚举更好。但是,如果使用枚举,则可读性较差:

myMethod(Week.SATURDAY.toString());

有没有一种方法可以以可读的方式使用枚举?

使您的方法接收枚举值,而不是字符串:

myMethod(Week.SATURDAY);

这就是enum之所以有用的原因,因为它通过在enum值中区分所有无效字符串值来避免这些无效字符串值。

除了像Kilanny所说的那样使方法接收
enum
值外,还可以使用
import static
导入enum常量,使其看起来与使用字符串时完全相同:

import static com.mypackage.Week.*;

// ...

myMethod(SATURDAY);

该方法不能接受枚举作为参数,例如
myMethod(Week w)
?代码是供programmars阅读的,而不是供外行阅读。使用符合逻辑的任何东西。作为旁注,您知道这里的
toString()
不会返回“星期六”,而是“星期六”,对吗?(除非您在enum声明中重写了
toString()
,我对此表示怀疑)。因此,这并不完全等同于开始。当然,正如其他人所说,让您的方法接受枚举类型而不是字符串。换句话说:这使得它类型安全,因为您无法传递无效值(该值不是枚举常量之一——除了
null
)。