正如其他地方發佈的那樣,您確切問題的答案是「否」。我的補充:「使用更具表現力的語言,比如Lisp,Python,Ruby或者像他們這樣的語言。」
雖然我懷疑你問的是錯誤的問題。你真正想要的是一種獲取任意顏色的alpha值的方法。面向對象的設計倡導者會用這個機會來填充工廠方法,子類型多態,枚舉類型和其他類似的東西。
鑑於我完全,沒有受過教育的遵約你的編碼水平和項目的複雜性,它看起來像一個可接受的解決方法(如果沒有正確的方式)的要簡單得多:
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-sequence分解成單獨的方法可能是合適的。和/或使用HashMap
這樣的:
HashMap<String, Integer> alphaValues = new HashMap<String, Integer>();
alphaValues.put("red", /* something like red.getAlpha() */);
//etc.
// ...
newAlpha = alphaValues.get(colorName);
我還沒有真正解決的問題的範圍 - 我敢肯定,你自己看着辦吧。
希望有幫助!
編輯:戴夫牛頓擊敗了我對hashmap的一拳 - 他在我創建我的時候編輯了他的帖子。
來源
2011-10-20 00:59:38
tsm
它實際上*不可能* - 甚至沒有「排序」 - 在這種情況下,因爲它們是局部變量而不是類成員;-)在任何情況下,考慮擴展示例(使用HashMap或whatnot) 。 – 2011-10-20 00:45:17
@pst哦,是的。便便。 –
錯字與類型參數:地圖 - >地圖<字符串,顏色>;) –
oksayt