可能是重复问题:
匿名内部类和命名内部类? - 最佳实践?
在Java中处理Handlers
时,人们通常使用以下三种方法:
- 创建一个将实现所有所需接口的类
- 创建一个
匿名内部类
- 创建一个
本地类
我只对2)和3)之间的区别感兴趣
将2)与3)进行比较,我们可以考虑以下代码。 在此示例中,编译器将仅生成一个类。
class MyHandler implements ClickHandler, DragHandler, MovedHandler
{
public void onClick(ClickEvent clickEvent)
{
// Do stuff
}
public void onMoved(MovedEvent movedEvent) {
// Do stuff
}
public void onDrag(DragEvent event) {
// Do stuff
}
}
MyHandler localHandler = new MyHandler();
button.addClickHandler(localHandler);
something.addDragHandler(localHandler);
that.addMovedHandler(localHandler);
在下面的例子中,编译器将会生成三个内部类(如果我说错了请纠正)。
button.addClickHandler(new ClickHandler()
{
public void onClick(ClickEvent clickEvent)
{
// Do stuff
}
});
something.addDragHandler(new DragHandler()
{
public void onDrag(DragEvent event)
{
// Do stuff
}
});
that.addMovedHandler(new MovedHandler()
{
public void onMoved(MovedEvent movedEvent)
{
// Do stuff
}
});
我的问题是:这两种方法之间还有其他的区别吗?使用其中一种方法是否存在任何注意事项?