【问题标题】:Use a variable like this: set.color(Color.variable)使用这样的变量: set.color(Color.variable)
【发布时间】: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


【解决方案1】:

详细说明我给出的评论。

您可以立即传递 Color.RED 或使用 Color.FromName(string name);

建议方法:

要传递 Color.RED,您的方法将如下所示:

private void produceRainbow() {
       Color color = Color.RED;
       produceArc(color);
    }

还有:

private void produceArc(Color color) {
    GOval arc = new GOval(leftX, upperY, rightX, lowerY); 
    arc.setColor(color);
}

方法二

如果出于某种原因,您将使用 FromName 方法,您可以像下面这样应用它:

private void produceRainbow() {
       String color = "Red";
       produceArc(color);
    }

还有:

private void produceArc(String color) {
    GOval arc = new GOval(leftX, upperY, rightX, lowerY); 
    arc.setColor(Color.FromName(color));
}

请注意,最后一种方法仅适用于 C#,不适用于 Java。 (我不确定您使用的是 Java 还是 C#)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-16
    • 2010-10-19
    • 2021-04-20
    • 2011-01-04
    • 2019-12-10
    • 2017-05-24
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多