Java 在迭代列表引用时更改列表引用不会更改其中的值

Java 在迭代列表引用时更改列表引用不会更改其中的值,java,Java,我更改了列表引用,并在迭代时将其指向整个新列表,但它仍然打印旧值 这似乎不正确,为什么任何人都想在迭代时更改列表本身引用自身,但迭代仍在进行,并且其他一些功能会更改引用本身或创建新对象并将其分配给原始列表 for (String s : lst) { System.out.println("list is:"+lst); System.out.println(s); lst = lst1; } 在一次迭代后,仍然会打印旧列表。for循环在本例中隐式地使用列表的迭代器,而不是列表。所以,更

我更改了列表引用,并在迭代时将其指向整个新列表,但它仍然打印旧值

这似乎不正确,为什么任何人都想在迭代时更改列表本身引用自身,但迭代仍在进行,并且其他一些功能会更改引用本身或创建新对象并将其分配给原始列表

for (String s : lst) {
 System.out.println("list is:"+lst);
 System.out.println(s);
 lst = lst1;
}

在一次迭代后,仍然会打印旧列表。

for
循环在本例中隐式地使用列表的迭代器,而不是列表。所以,更改列表的链接没有效果,您仍然隐式地使用旧的迭代器


在for each循环中查看此项,对于第一次迭代本身,将获得列表的迭代器。这是因为for-each循环的内部处理机制是在编译过程中定义的。因此,如果您只是使用新实例分配列表引用,它不会影响迭代器。

请提供适当的代码。您的代码显示了一些未声明的引用变量。这是一种多线程应用程序,但第二个触发器将来自JMX调用。