在平时写代码中经常会在方法中起一个线程,但是在局部内部类中使用外部局部变量的话编译器会提示将外部局部变量定义为final类型,这是为什么呢1
2
3
4
5
6
7
8
9
10
11
12
13public void test(final String a, String b){
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":"+a);
}
}).start();
}