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

Java 如何在循环中调用串行对象名称?,java,Java,我想调用100个对象名,而不需要写100次 假设我有100个按钮,分别是B1,B2,B3…B100 例如,我想将它们设置为可见,因此我需要编写 B1.setVisible(true); 对于其余99对象,依此类推 我需要在循环中输入它们,以便每转一圈新对象都可见 我试过Bi.setVisibletrue;但是IDE没有接受它 我试过B%.setVisibletrue;但我不知道如何替换% 重要提示:100个对象已经存在 谢谢将按钮添加到a-如果按钮文本及其行为足够相似,您可以在循环中执行此操作

我想调用100个对象名,而不需要写100次 假设我有100个按钮,分别是B1,B2,B3…B100 例如,我想将它们设置为可见,因此我需要编写

B1.setVisible(true);
对于其余99对象,依此类推 我需要在循环中输入它们,以便每转一圈新对象都可见 我试过Bi.setVisibletrue;但是IDE没有接受它 我试过B%.setVisibletrue;但我不知道如何替换% 重要提示:100个对象已经存在 谢谢

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

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

如果它们是对象的一部分,可以使用反射

就性能而言,它不是最好的,但如果你有一个需要它的遗留应用程序,你可能会遇到比这更糟糕的情况

下面是一个与您需要的代码相匹配的代码

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);
}

使用java.util.Map实现。或者使用对象的n数组。您可以将它们放入一个数组中,并在整个数组中循环,将它们全部设置为不可见。您没有办法像您希望的那样执行此操作,因此我必须添加100个按钮!同样的问题,你必须在某个地方创建它们-通常按钮会附加一些特定的行为和指定一些独特的文本,但是如果按钮足够相似,你当然也可以在循环中创建它们。那么你已经有100个按钮字段,称为b1、b2、b3。。。?在这种情况下,您应该考虑重构代码。否则,@Walfrat提出的反思确实是唯一的可能性。在某种情况下,您应该在问题中添加这些字段已经存在的事实。事实上,如果您有遗留代码,只需说您有遗留代码,我们都知道这意味着什么,并将更准确地回答。不,这不是遗留代码,只需在鼠标单击时添加事件以隐藏某些对象,但我不想单独写入所有对象的名称
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);
}