Java:如何将for循环中创建的本地引用转换为全局引用?

时间:2010-11-09 09:19:08

标签: java

如何在for循环中创建本地引用到全局引用?以下代码不会编译:

另外,在实际项目中,t的数量和t的类型是数据驱动的(我通过地图的地图循环来做出决定),所以在开始循环之前我不能指定t ..... / p>

public class TestLocal{
  public static void main(String [] args){

  for (int i=1; i<1; i++){
    TestLocal t=new TestLocal();
   }
   System.out.println("This is the new object:  " + t );
 }
}

我怎样才能从外面进行循环访问?

更多代码

注意:

1)test有很多值,要创建的实例取决于它的值。

2)因为我循环遍历数据驱动的地图,所以要创建的实例数取决于内部地图的数量......

                        for (int i=0;i<sortedMap.size();i++){
                           ArrayList<Object> a = new ArrayList<Object>(sortedMap.keySet());
                           Object o=a.get(i);
                           HashMap m=(HashMap)sortedMap.get(o);
                           int test = ((Number)m.get("textType")).intValue();
                          if (test==3){
                           System.out.println("all together: " + sortedMap.size() + "each element is:  " + o + " value: " + m.get("textType"));
                           String mytest = (String)m.get("text");
                           ChapterAutoNumber chapter1 = new ChapterAutoNumber(mytest);
                        }

2 个答案:

答案 0 :(得分:1)

将它们放入集合中。例如Set

Set<TestLocal> set = new HashSet<TestLocal>();

for (..) {
  TestLocal t = new TestLocal();
  set.add(t);
}

然后你可以迭代你的实例:

for (TestLocal t : set) {
 // access each instance
}

如果您只想在外面访问一个实例,那么只需在外部定义:

TestLocal t = null;
for (..) {
  t = new TestLocal();
}

答案 1 :(得分:1)

没有“本地参考”或“全球参考”这样的东西。您只是尝试访问变量而不在其范围内。你想要这样的东西:

TestLocal t = null;
for (int i=1; i<1; i++) {
    TestLocal t=new TestLocal();
}
System.out.println("This is the new object:  " + t );

请注意,这将打印null,因为您实际上并不打算运行循环体(因为1不小于1)。

如果要收集循环中创建的对象,列表可能更合适:

List<TestLocal> list = new ArrayList<TestLocal>();
for (int i = 0; i < 10; i++) {
    list.add(new TestLocal());
}
// Now access the objects via list