如何在循环中调用串行对象名称?

时间:2016-04-18 07:03:13

标签: java

我想调用100个对象名,而不需要写100次名字 假设我有100个名为B1,B2,B3 ... B100的按钮 例如,我想将它们设置为可见,所以我需要写

B1.setVisible(true);
其余99个对象的

等等 我需要在循环中输入它们,以便每次转动新对象都可见 我试过B"i".setVisible(true);,但IDE不接受它 我试过B%.setVisible(true);,但我不知道如何更换% 重要提示:已存在100个对象 谢谢

2 个答案:

答案 0 :(得分:5)

将按钮添加到List - 如果按钮文本及其行为足够相似,您可以在循环中执行此操作:

...
List<Button> buttons = new ArrayList<>();
for (int count = 0;  count < 100; count++) {
   Button myButton = new Button("b" + count);
   buttons.add(myButton);
}
...

然后,您可以遍历列表并访问所有按钮:

...
for (Button b : buttons) {
   b.setVisible(true);
}
...

答案 1 :(得分:2)

如果他们是对象的一部分,您可以使用反射。 http://tutorials.jenkov.com/java-reflection/fields.html

性能方面它并不是最好的,但是如果你有一个遗留的应用程序,你需要这个,你可能比这更糟糕。

以下是符合您需要的代码。

MyObject objectInstance = new MyObject();
Class  aClass = MyObject.class
for(int i = 1; i <=100; i++){
    Field field = aClass.getField("B"+i);
    // get the value
    Object value = (Button)field.get(objectInstance);
    // set the value 
   field.set(objetInstance, value);
}