Как проверить два условия, используя перечисление в тройном операторе? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть перечисление:

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

Как мне соединить две линии, чтобы одна была права?

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете использовать вложенный троичный оператор следующим образом:

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 для констант перечисления.

...