在Java中调用/使用字符串值的变量?

时间:2014-05-05 20:37:53

标签: java variables

所以我有一系列名为card1的jButtons到card20。我想根据是否满足特定条件来更改图标,因此我想制作一个循环并将每个参考为(" card" + i)或类似的东西而不是为每个按钮编写单独的if语句。我在下面添加了使用的代码,但有没有办法循环使用if语句,因此每个代码循环都会影响另一张卡?

private void cardreset() {
    if (cardmatch[1] == 0) {
        card1.setIcon(back);
    }
}

这就是我想要做的,但是添加所有"卡"预先在数组中生成的变量会产生非法的前向引用错误。

private void cardreset() {
    for(int i=1; i<=20; i++){
        if (cardmatch[i] == 0) {
            card[i].setIcon(back);
        }
    }
}    

2 个答案:

答案 0 :(得分:2)

您可以将它们放在一个数组中并以这种方式修改它们。

JButton cards[] = { card1, card2, ..., card20 };

然后当你想要修改所有图标时:

if (condition) {

  for (JButton card : cards)
    card.setIcon(...);

}

或修改特定图标(比如每隔一个图标):

for (int i = 0; i < cards.length; i++)
  if (i % 2 == 0)
    cards[i].setIcon(...);

答案 1 :(得分:1)

理论上你可以用reflection来做 - 但这是一个非常糟糕的做法。

相反,您应该使用Map<String, Type>,并使用地图来引用它们。

只是为了它的乐趣,这里有如何用反射来做,但同样,我强烈反对它。

for (int i = 0; i < 4; i ++) { 
    Field f = MyClass.class.getDeclaredField("card" + i);
    System.out.println(f.get(myClass));
}