我有一个枚举:

public enum GSProccesingType {
    bigCover,
    cover,
    other
}


如果出现封面,则选择FileStoreUtils.coverFileName;如果出现bigCover,则选择bigCoverFileName;否则为“ 04d.png”

我不能为掩护和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作为枚举常量。

08-17 15:56