If it's inner public static class, 象eclipse SWT的Grid.Cell是为了体现一种从属关系,面向对象的思维方式。
Inner private or protected or package static class,象LinkedList的Entry类,是内部使用,没有必要建多一个java class,然后在java doc的时候被列出来,以至于混淆读者。
Inner non-static class我觉得从面向对象的角度看,有点矛盾,所以本人从来不用。
Inner wrapping class往往是为了省下一个java file.当java文件很短时,用。我一般也不用。
反过来,响应事件到不推荐使用inner anonymos class,因为那样会增添很多线程,增加了jvm维护的负担。本人写GUI时用的是1-to-1 UI class and Control class.Sample:
public class XUI
{
  private XControl control;
  public XUI()
  { 
    control = new XControl(this);
  }
  ..
  component.addActionListener(control);
  ..
}
class XControl implements ActionListener
{
  private XUI ui;
  XControl(XUI ui)
  {
    this.ui = ui;
  }
  public void ActionPerformed(ActionEvent e)
  {
    Object src = e.getSource();
    if (src == ui.button1)
      ..
    else if (src ==..)
      ..
  }
  ..
}