匿名类中的最终变量

时间:2014-11-06 22:59:27

标签: java final anonymous-inner-class

我有一个匿名类,它从集合中获取迭代值,如下所示。使用此代码,是否在匿名类中保留了立即变量in?或者不同的线程可以采用相同的in值?

List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 20; i++)
    list.add(i);

for (final Integer in : list) {
    new Thread(new Runnable() {

        @Override
        public void run() {
            Thread.sleep(1000);
            System.out.println(value + "," + in);
        }
    }).start();
}

2 个答案:

答案 0 :(得分:3)

是的,in的每个值都保留在每个创建的Thread中。只要声明为final,或者如果您正在使34; (不是final但未更改)。

答案 1 :(得分:0)

您不能将变量作为最终变量并为其赋予新值。 final意味着:价值是不可改变的,也是最终的。

由于它是最终的,Java可以安全地将其复制到本地匿名类