2016-03-15 9 views
0

У меня есть предопределенный конечный список значений. Каждое из этих значений должно быть сопоставлено с другим значением.Могу ли я иметь перечисления с параметрами?

Пример:

AAAAA -> AZER 
BBBBB -> BVCX 

Но у меня есть, в зависимости от какого-либо параметра:

CCCCC -> CPA1 
CCCCC -> CPA2 
CCCCC -> CPA3 
CCCCC -> CPA4 

Первоначально я думал использовать перечисления, но как фактор в параметре?

+0

, добавив переменную к вашему перечислению и установив ее в свой конструктор. – Stultuske

+2

По какой логике «CCCCC» отображается на разные значения? –

+0

Чтение [this] (https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html) –

ответ

1

Вы можете использовать конструктор, как показано ниже, чтобы отобразить значения

enum Apple { 
    A(10), B(9), C(12), D(15), E(8); 

    private int price; // price of each apple 

    // Constructor 
    Apple(int p) { 
    price = p; 
    } 

    int getPrice() { 
    return price; 
    } 
} 
+0

Это не позволяет «CCCCC» иметь четыре разных цены «в зависимости от некоторого параметра». – Thilo

0

Вы можете добавить методы перечислений, чтобы передать параметры, например,

enum MyEnum { 
    AAAAA { 
    @Override String mappedValue(Param parameter) { return "AZER"; } 
    }, 
    BBBBB { 
    @Override String mappedValue(Param parameter) { return "BVCX"; } 
    }, 
    CCCCC { 
    @Override String mappedValue(Param parameter) { 
     if (parameter.equals(something)) { 
     return "CPA1"; 
     } else if (parameter.equals(somethingElse)) { 
     return "CPA2"; 
     } else { 
     return "CPA3"; 
     } 
    } 
    } 
    ; 

    abstract String mappedValue(Param parameter); 
} 
Смежные вопросы