写几个我的理解吧,
1,内隐类可以访问主类的数据,这点比较方便,如果传参数给内隐类的话,需要将参数设成 final 的。
2,我见过用 inner class 的地方一般是多线程,或是注册某个类的监听器,因为这样的类一般只有一个地方用到,写在用的地方,可以更好的隐藏实现的细节。

解决方案 »

  1.   

    谢谢 haha1903(中国人) ^_^,小弟我实在不得要领,尤其是在看TIJ2那专述内隐类的那几节,头都大了!!因为我建立不起来关于内隐类的概念与应用框架。呵呵,见笑:L
      

  2.   

    小弟寫的一個很簡單內部匿名類例子public class Base {
        public void aMethod(){
            System.out.println("aMethod in base");
        }
    }public class OutClass extends Base {
        public void aMethod(){
            System.out.println("aMethod in outClass");
        }
        public void static main(String[] args) {
            OutClass oClass = new OutClass(){
                public void aMethod(){
                    System.out.println("aMethod in innerClass");
                }
            };
            oClass.aMethod();
        }
    }運行java StartUp,其結果輸出 aMethod in innerClass
      

  3.   

    谢谢“TyroneChan(油亮脖子金黃腳)”,不过不是很理解他的运行机制和内隐类的实质:L
      

  4.   

    内隐类最大的特点就是只为包含它的outer类服务,不需要甚至不想让外面的其他类看到的一些服务类,有的匿名;这些类既然被设计为一种特殊的类,当然有它的一些特别机制,就是能够访问包含类的成员和函数,典型应用就是在gui的各种监听器以及多线程中。建议这么理解:它就是一个class,只不过特殊了一些,那么特殊在哪儿呢,记住就可以了
      

  5.   

    内部类很多时间就是用于GUI设计的事件处理,最常用到的是匿名内部类。用内部类的好处就是可以不用重复做一件事,比如说你要添加一个按钮的ActionListener事件,而你这个事件只需要在内部类中定义一次,以后就不用再new一个新类的对象来创建按钮事件了!看下面这个例子:
    makeButton(String name, final String plafName)   //匿名内部类访问需要final关键字
         {
            JButton button = new JButton(name);
            add(button);
            button.addActionListener(new             //new一个匿名内部类
               ActionListener()
               {
                  public void actionPerformed(ActionEvent event)
                  {
                        UIManager.setLookAndFeel(plafName);
                        SwingUtilities.updateComponentTreeUI
                           (ButtonPanel.this);
                  }
               });