正如在其他地方发布的那样,您的确切问题的答案是“不”。还有我的补充:“使用更具表现力的语言,例如 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 序列分解为单独的方法可能是合适的。和/或因此使用HashMap:
HashMap<String, Integer> alphaValues = new HashMap<String, Integer>();
alphaValues.put("red", /* something like red.getAlpha() */);
//etc.
// ...
newAlpha = alphaValues.get(colorName);
我还没有真正解决范围问题——我相信你能弄清楚。
希望有帮助!
编辑:Dave Newton 在 hashmap 方面击败了我——他在我创建我的帖子时编辑了他的帖子。