m0_51649309 2022-03-26 13:57 采纳率: 20%
浏览 13
已结题

为啥相似的代码在android studio 与 eclipse 上结果不同

问题遇到的现象和发生背景

在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(){

    }
}

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 立青_ 2022-03-26 14:26
    关注

    你这代码贴的真是....

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月26日