对于只有一个成员变量的 enum
,是否有一种更简单(和最佳实践)的方式来访问它而不使用访问器方法?我也考虑过在常量类中使用 public static final
变量,但我读得越多,就越有人建议使用 enum
作为封装这些值的方式。
为了说明我的意思,我举了下面的例子:
public enum FILE_NAME {
MAIN("MAIN.TXT"),
ATTACHMENT("ATTACHMENT.TXT"),
OTHER("OTHER.HTM");
private String fileName;
FILE(String fileName) {
this.fileName = fileName;
}
public String getfileName() {
return fileName;
}
}
然后我通常会像这样访问该值:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(bos);
// Add file
zip.putNextEntry(new ZipEntry(FILE_NAME.MAIN.getFileName()));
对于我的特定用例,我更愿意通过如下调用访问文件名:
...
zip.putNextEntry(new ZipEntry(FILE_NAME.MAIN));
在这样做时,代码减少了访问 MAIN
文件名文本所需的调用的长度(并且几乎减少了调用文件的文件名的语法冗余)。虽然这甚至可能不可行或不可取,但我很想知道它是否值得考虑。
谢谢。
最佳答案
为了简化它,同时保持安全,使用public final String
字段作为文件名:
public enum FileType {
MAIN("MAIN.TXT"),
ATTACHMENT("ATTACHMENT.TXT"),
OTHER("OTHER.HTM");
// Name in all-caps to make it look like the constant it is
public final String FILENAME;
private FileType(String fileName) {
this.FILENAME = fileName;
}
}
使用方法:
zip.putNextEntry(new ZipEntry(FileType.MAIN.FILENAME));
请注意,将类名更改为“FileType”以更好地遵守 Java 标准。
关于java - 常量和简化枚举值访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7424417/