Copy 'xxx' to effectively final temp variable 问题解决
今天在项目中修改接口的时候突然发现了类型问题,便用if函数对变量进行了类型的校验。
int a = 0;if (params.get("a") instanceof Integer) { a = (int) params.get("a");}else { a = Integer.parseInt(params.get("a").toString());}
没有多想,便进行了提交,编译后发现竟然报错了。筛查后发现,在这块代码下有一处匿名内部类调用了该变量。
int finalA = a;Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("thread a = " + finalA); }});
出错的原因是:内部类对象的生命周期会超过局部变量的生命周期。 ...
