内部匿名类是不是必须在接口上使用?

解决方案 »

  1.   

    不用,任何一个地方都能创建InnerClass
      

  2.   

    比如你的这个类B只有类A在调用,那么类B就可以写成内部类了。
      

  3.   

    >>内部 匿名类 是不是必须在接口上使用?明白你的意思了,不是的
    比如
    new Object(){
        public int hashCode(){return 1;}
    };
      

  4.   

    本来我不想说了,因为许多人都知道,不清楚可以看一下Sun的文档,
    我也不是特别清楚匿名内部类,容易出错,比如局部变量必须是final 类型,一般不要轻易使用,常见的使用方式是在实现一个接口,或者某个适配器
    如textField.addActionListener(new ActionListener()
    {
    //......
    }
    );
      

  5.   

    多看文章,问问Sun 为什么想到了 内部类 ,然后你就知道什么时候用比较合适。
      

  6.   

    非也!
    匿名类是对内部类的改进,允许我们把类的定义与类的实例的分配组合在一起。
    无须象其他任何嵌套类那样进行声明,可以直接转到“new SomeClass()”实例化对象的位置,并把哪里的整个类放到花括号中。比如:
    public class out{
                  ...
               public static main(String args[]){
                someone.someone(new Some(){...});//...即为内部类内容
                }
    }
    out.java编译后生成out.class和out$1.class两个类文件,其中out$1.class就是内部类的文件。
    当然这个说明上述代码中存在一个Some的接口或者是类。
    在事件处理只有几行代码的地方,仅能使用内部类或者匿名类,若是事件处理代码比较多,建议采用顶级类比较好!
      

  7.   

    我觉得匿名内部类的主要作用还是在实现事件处理机制上。
    为了实现一个只用一次的Listener的实例,其他地方还是少用为妙