问题遇到的现象和发生背景
在android studio里创建监听器的时候为什么可以访问非final的外部变量?同样的代码在Eclipse上跑就要求外部变量为final的呢?
问题相关代码,请勿粘贴截图
android studio
test
public class test {
public void h() {
test2 a = new test2();
int adsf = 32;
test2.inner sd = a.new inner() {
public void f() {
Log.i("msg",String.format("%d",adsf));
}
};
sd.f();
}
}
test2
public class test2 {
public class inner{
public void f(){
}
}
}
MainActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test x = new test();
x.h();
以下是eclipse中的代码
test
public class test {
public void h() {
test2 a = new test2();
int adsf = 32;
test2.inner inner = a.new inner() {
public void f() {
System.out.println(adsf);
//这里报错显示adsf必须被final修饰
}
};
}
}
test2
public class test2 {
public class inner{
public void f(){
}
}
}