java - 如何在三元运算符中使用枚举检查两个条件?

标签 java enums ternary-operator

我有一个枚举:

public enum GSProccesingType {
    bigCover,
    cover,
    other
}

这样的情况如果封面出现则选择FileStoreUtils.coverFileName,如果bigCover出现则选择bigCoverFileName else "04d .png"

我无法为 cover 和 bigCover 制定短期条件

final String fileName = proccesingType == cover  ? FileStoreUtils.coverFileName : "%04d.png";

final String fileName2 = proccesingType == bigCover ? FileStoreUtils.bigCoverFileName : "04d.png";

如何将两条线正确连接到一根?

最佳答案

您可以像这样使用嵌套三元运算符:

final String fileName = proccesingType == cover  ? 
                            FileStoreUtils.coverFileName : 
                            (proccesingType == bigCover ? FileStoreUtils.bigCoverFileName : "%04d.png");

,但这很难阅读。我建议为此创建一个方法:

private String getFilename(GSProccesingType type) {
    switch(type) {
        case cover: return FileStoreUtils.coverFileName;
        case bigCover : return FileStoreUtils.bigCoverFileName ;
        default: return "%04d.png";
    }
}

虽然更长,但更容易阅读和理解。

我还建议关注generally accepted naming conventions ,并使用 ALL_UPPERCASE 表示枚举常量。

关于java - 如何在三元运算符中使用枚举检查两个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52197320/

相关文章:

c++ - 三元运算符优先级和赋值

javascript - 三元运算符内的赋值,反模式?

objective-c - 使用吗? : to do an assignment produce faster assembly than using if()?

java - 发送前打印 URLConnection 请求

java - 内部静态枚举作为泛型类型?

java - java - 如何在java中的方法中将枚举作为参数传递?

c - 像 "GLenum GlewInitResult = glewInit();"这样的声明(?)是做什么的?

java - 如何使用 Spring 3.0 表达式语言参数化 @Scheduled(fixedDelay)?

java - 规范化 IP 地址

java - 如何从响应实体获取正文