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 ==..)
..
}
..
}
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 ==..)
..
}
..
}
例如:
JButton b = new JButton() {
// do SOMETHING
}