【发布时间】:2013-11-01 20:35:53
【问题描述】:
在这种方法中,我创建了一个字符串变量,并将其移至另一个变量。
private void produceRainbow() {
String color = "RED";
produceArc(color);
}
那里有更多代码但没关系(本质上是将字符串更改为其他颜色)。
接下来这个方法:
private void produceArc(String color) {
GOval arc = new GOval(leftX, upperY, rightX, lowerY);
arc.setColor(Color.color);
}
(忽略变量leftX,upperY,rightX,lowerY)
这里我想将颜色设置为字符串。
所以我希望它变成arc.setColor(Color.RED)
当我编译时,我得到这个错误:
Program.java:89: cannot find symbol
symbol : variable color
location: class java.awt.Color
arc.setColor(Color.color);
甚至可以做我想做的事吗?如果是这样,我做错了什么?
(如果你很好奇,我为每条弧线(红色、蓝色、绿色等,都有自己的方法)制作了一个单独的方法,这很有效,但我想知道我是否可以只使用一种方法一个变量,这使得代码更短)
【问题讨论】:
-
你真的要传递一个字符串吗?您可以立即通过 Color.RED。或者如果你真的想使用字符串,你可以使用 Color.FromName(string name);
-
如果您真的想使用字符串,您可以使用反射来获取名称与字符串匹配的静态字段,或者构建将字符串映射到 Color 实例的映射。但这些都是丑陋且不安全的(就类型/编译检查而言)。我会接受@James 的建议。
标签: java string variables colors