匿名类对于我现在的理解层面在于它方便灵活了对接口以及抽象类方法的实现,如果你只需要在一个地方对某个对象实现相应的用法,那么你就可以考虑使用匿名内部类啦~。光说一定会晕的那么我们用小例子说话:
引用
下面的例子是android给按钮绑定事件的常用方法
java代码
public class activity1 extends activity {
onclicklistener listener1 = null;
button button1;
/** called when the activity is first created. */
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity1);
listener1 = new onclicklistener() {//onclicklistener是一个接口
public void onclick(view v) {//onclick()方法是这个借口唯一的方法
bundle bundle = new bundle();
bundle.putstring("store", "数据来自activity1");
intent mintent = new intent();
mintent.putextras(bundle);
setresult(result_ok, mintent);
finish();
}
};
button1 = (button) findviewbyid(r.id.button3);
button1.setonclicklistener(listener1);
... ... ...(还有代码在下面~)
这个就用到了内部类,原因在于当这个按钮按下时只会触动专属于它的一个事件,不会再有其他事件了,所以使用内部类就可以把实现和执行动作一并搞定!有点像javascript的匿名函数哦~
在给几个小例子:
java代码
package com.eoeandroid.activity;
interface onclicklistener{
void onclick(string s);
}
public class testlistener {
public static void main(string... strings){
onclicklistener listener = new onclicklistener(){
@override
public void onclick(string s) {
// todo auto-generated method stub
system.out.println(s);
}
};
listener.onclick("ok!");
}
}
这个代码相当于将onclicklistener接口实现后引用,就好比如下代码:
java代码
package com.eoeandroid.activity;
interface onclicklistener{
void onclick(string s);
}
class mylistener implements onclicklistener{
@override
public void onclick(string s) {
// todo auto-generated method stub
system.out.println(s);
}
}
public class testlistener {
public static void main(string... strings){
mylistener listener = new mylistener();
listener.onclick("ok!");
}
}
更多java 匿名内部类。
