我从这个网页知道 接口不能实例化,我这里把问题写出来.
:
我的认识是: 
因为List是一个接口.故我不能这样使用:
 List<MyObj>  mlist=new List<MyObj>();我的问题是:
android中的View类有 OnClickListener 这个接口,可是我发现 OnClickListener 这个接口就大量的new:
如下:
 btn1.setOnClickListener(new View.OnClickListener() {  ///<-------设置监听事件。
            @Override
            public void onClick(View v) {    
                    .............           
            }
        });
请问你 这个 onClickListener 为什么可以被实例化呢,谢谢!

解决方案 »

  1.   

    对啊。匿名内部类,其实就是相当于你新建了一个类,实现了View.OnClickListener这个接口,只是你新建的类没有名字.. 事件中,这种方式很常见的
      

  2.   

    哦,谢谢各位热心回答,刚开始学java,还是不明白, 等有时间好好的看看,谢谢各位。
      

  3.   

    匿名内部类:
    1,匿名内部类其实就是内部类的简写格式。
    2,定义匿名内部类的前提:
    内部类必须是继承一个类或者实现接口。
    3,匿名内部类的格式:  new 父类或者接口(){定义子类的内容}
    4,其实匿名内部类就是一个匿名子类对象。 可以理解为带内容的对象。
    5,匿名内部类中定义的方法最好不要超过3个。
    */
    abstract class AbsDemo
    {
    abstract void show();
    }class Outer
    {
    int x = 3; public void function()
    {
    //匿名内部类
    new AbsDemo()
    {
    int num = 9;
    void show()
    {
    System.out.println("num==="+num);
    }
    }.show();
    }
    }class InnerClassDemo 
    {
    public static void main(String[] args) 
    {
    new Outer().function();
    }
    }
      

  4.   


    new View.OnClickListener() {  ///<-------设置监听事件。
                @Override
                public void onClick(View v) {    
                        .............           
                }
            });
    其实这已经是一个继承了OnClickListener接口一个类,准确的说就是一个匿名内部类