首页 > 解决方案 > 如何使用三元运算符中的枚举检查两个条件?

问题描述

我有一个枚举:

public enum GSProccesingType {
    bigCover,
    cover,
    other
}

这样的条件,如果封面来了则被选中FileStoreUtils.coverFileName,如果bigCover来了则被选中,bigCoverFileName否则“04d.png”

我不能为封面和大封面做一个简短的条件

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

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

我如何将两条线连接到一条才能正确?

标签: javaenumsternary-operator

解决方案


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

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";
    }
}

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

我还建议遵循普遍接受的命名约定,并将 ALL_UPPERCASE 用于枚举常量。


推荐阅读