咨询个内部类的问题
疯狂Android讲义有段代码如下,其中匿名内部类用到了外部的show对象,但为什么show不用final呢?望高手帮忙解答,万分感谢!
public class AnonymousListener extends Activity
{
EditText show;
Button bn;
@Override
publicvoid onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show = (EditText)findViewById(R.id.show);
bn = (Button)findViewById(R.id.bn);
//直接使用Activity作为事件监听器
bn.setOnClickListener(new OnClickListener()
{
//实现事件处理方法
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
show.setText("bn按钮被单击了!");
}
});
}
}
java
Android
------解决方案--------------------如果把它写在onCreate方法里,就需要是final了。
------解决方案--------------------
这个问题对于我等菜鸟来说还是有点难以讲清楚的
对于外部类的成员变量不用添加final这个很容易知道
因为内部类保存了外部类的引用,内部类对其的修改都会真实
的反映到外部类的实例上!
至于onCreate方法中必须使用final是为了保持内外一致!
怎么个内外一致,我有点说不清,给个链接吧,感觉说的比较到位
http://www.blogjava.net/DLevin/archive/2011/11/23/364599.html