欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中匿名内部类解读分析

程序员文章站 2023-12-09 18:17:39
这段时间在看android,看到了java里面的匿名内部类,在印象当中.net里面不支持匿名内部类。 匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new...

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

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

如:

 

  • interface pr
  •      void print1(); 
  • public  class nonameclass  
  • {
  •   public pr dest() 
  •   { 
  •       return   new pr(){ 
  •           public  void print1() 
  •          {
  •             system.out.println("hello world!!");
  •           }
  •      };
  • public    static    void main(string args[])
  •        nonameclass c=new nonameclass();
  •        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();
     }
    };