实现什么都不做的接口方法

时间:2011-08-12 09:25:35

标签: java design-patterns adapter

假设我有这个界面和类:

interface IListener
{
   void f();
   void g();
   void h();
}

class Adapter implements IListener
{
   void f() {}
   void g() {}
   void h() {}
}

如果什么都不做,那么实现thoose接口方法的意义何在?

问题来自Design Patterns Java Workbook

2 个答案:

答案 0 :(得分:10)

如果您不需要所有方法,目的是使界面的实现更容易。您可以扩展适配器并仅覆盖您想要的方法。这些类仅为方便起见而存在。

例如,在Swing中,实现MouseListener时,您可能不希望处理所有鼠标事件。在这种情况下,您可以扩展MouseAdapter并仅处理您感兴趣的事件。

请注意,Adapter类通常也会实现该接口。

答案 1 :(得分:2)

在你发布的示例中它是无用的,但是如果你使用适配器来实现IListener(class Adapter implements IListener),它就像实例化new Adapter()之类的适配器对象一样有用了。

否则,在接口中定义的所有方法都具有正确的实现之前,Adapter仍然是一个不能实例化的抽象类,也不能是其子类。一个空的实现也是一个正确的实现。