Есть ли способ объявить об перечислении, которое имеет несколько представлений, например, числовая и строка. < /p>
Цель здесь состоит в который имеет 2 разных представления цифровой и строки. Любое представление является достоверным и уникальным для перечисления. /code> и alphacode Представляют 2 представления enum.
enum class Foo {
Value01 { 001, "aa" },
Value02 { 002, "bb" },
.....
ValueN. { nn, "zz" };
private:
Foo( int numeric, const string alpha ) : numericCode( numeric ), alphaCode( alpha ) {}
private:
int numericCode;
string alphaCode;
};
< /code>
Обоснование для этого состоит в том, чтобы избежать общей конструкции выполнения строки или числовых сравнений для определения перечисленного случая; Избегайте нескольких символов для магических чисел между ситуационно удобными компиляционными единицами или трудно поддерживать жестко закодированные магические числа по всей базе кода и т. Д. Есть несколько кодов, которые представляют страну; Альфа 2 символа, альфа -альфа -3 и 3 цифр. Каждый код однозначно представляет собой конкретное перечисленное значение, в то время как несколько представлений могут однозначно идентифицировать одно перечисленное значение. < /P>
Это цель, но в Java. < /P>
public enum Foo {
Value01 ( 001, "aa" ),
Value02 ( 002, "bb" ),
ValueNN ( 999, "zz" );
private final int numericCode;
private final String alphaCode;
Foo( final int numeric, final String alpha ) {
numericCode = numeric;
alphaCode = alpha;
}
public String getAlpha() {
return alphaCode;
}
public int getNumeric() {
return numericCode;
}
}
< /code>
Я пытался сделать псевдод в вопросе. Я реализовал это в Java несколько раз.
Подробнее здесь: https://stackoverflow.com/questions/794 ... attributes