java中匿名内部类解读分析

时间:2021-05-19

这段时间在看android,看到了java里面的匿名内部类,在印象当中.net里面不支持匿名内部类。

匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示:
new <类或接口> <类的主体>
这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。

如:

  • interfacepr
  • {
  • voidprint1();
  • }
  • publicclassnoNameClass
  • {
  • public pr dest()
  • {
  • returnnewpr(){
  • publicvoidprint1()
  • {
  • System.out.println("Hello world!!");
  • }
  • };
  • }
  • publicstaticvoid main(String args[])
  • {
  • noNameClass c=newnoNameClass();
  • pr hw=c.dest();
  • hw.print1();
  • }
  • }

pr也可以是一个类但是你外部调用的方法必须在你的这个类或接口中声明外部不能调用匿名类内部的方法

摘自:http://blog.sina.com.cn/s/blog_62ea4cf40100mubj.html

android中点击事件

Button btn=(Button)this.findViewById(R.id.button1);

btn.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

}

});

new 是建立一个 Button.OnClickListener对象 ,后面一个 {}
表示这个括号中的操作作用于这个默认的对名象,而上面的Java程序中后面是一个函数体。
这个用法的作用是:创建一个对象的实例,并且 override
它的一个函数。它是对 OnClickListener
接口的一个实现。

android多线程中

private Runnable mRunnable = new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub

try
{
Thread.sleep(5000);
mHandler.sendMessage(mHandler.obtainMessage());
}
catch(InterruptedException e)
{

}

}
};
public Handler mHandler = new Handler()
{
public void handleMessage(Message msg)
{
super.handleMessage(msg);
Reflesh();
}
};

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章