Как написано в другом месте, ответ на ваш точный вопрос: «Нет».И мое дополнение: «Используйте более выразительный язык, такой как Lisp, Python, Ruby, или такой, как они».
Я подозреваю, что вы задаете не тот вопрос.То, что вы действительно хотите, это способ получить альфа-значение произвольного цвета.Сторонник объектно-ориентированного проектирования использовал бы эту возможность, чтобы наполнить вашу голову фабричными методами, полиморфизмом подтипов, перечисляемыми типами и другими подобными вещами.
Учитывая мои необразованные предположения о вашем уровне кодирования исложность проекта, похоже, что приемлемый обходной путь (если не Правильный путь) намного проще:
int newAlpha = 0;
if(colorName.equals("yellow") newAlpha = yellow.getAlpha();
else if(colorName.equals("red") newAlpha = red.getAlpha();
else if(colorName.equals("blue") newAlpha = blue.getAlpha();
else //raise some kind of exception, assert false, or do something else that seems sensible
(Обратите внимание, что я немного изменил несколько имен в соответствии со стилем Java.)
Я понятия не имею, что происходит в классе Color
(или даже как red
, yellow
и blue
отличаются - с текущим кодом они будут одинаковыми (имена локальных переменных не влияют на объект, на который они ссылаются)), но, вероятно, целесообразно разбить последовательность if на отдельный метод.И / или используйте HashMap
таким образом:
HashMap<String, Integer> alphaValues = new HashMap<String, Integer>();
alphaValues.put("red", /* something like red.getAlpha() */);
//etc.
// ...
newAlpha = alphaValues.get(colorName);
Я действительно не решал проблему с областью видимости - я уверен, что вы можете разобраться с этим.
Надеюсь, что это поможет!
Редактировать: Дэйв Ньютон опередил меня по поводу хэш-карты - он редактировал свой пост, пока я создавал свой.