如何在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);
}
答案 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