Java中是否有一个习惯用语用于满足接口的空方法?

2022-09-01 15:56:17

假设我有一个类实现一个接口,例如.该接口由五种方法组成,但我只希望覆盖其中一个()。是否有标准的惯用方法来格式化其他方法?FooMouseListenerMouseListenermouseClicked()

我的倾向是写以下内容:

@Override
public void mouseClicked(MouseEvent e) {
    // (...) <-- actual code here
}

@Override
public void mouseEntered(MouseEvent e) {
    // Do nothing.  Exists to satisfy MouseListener interface.
}

@Override
public void mouseExited(MouseEvent e) {
    // Do nothing.  Exists to satisfy MouseListener interface.
}

@Override
public void mousePressed(MouseEvent e) {
    // Do nothing.  Exists to satisfy MouseListener interface.
}

@Override
public void mouseReleased(MouseEvent e) {
    // Do nothing.  Exists to satisfy MouseListener interface.
}

我喜欢明确指出方法被故意留空,而不是意外地留空,但我对基本上一无所有放弃的垂直空间并不疯狂。我还看到了以下格式:

public void mouseClicked(MouseEvent e) {
    // (...) <-- actual code here
}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}

我通常可以接受这一点,我理解作者的意图,但是当添加(推荐的)注释时,它变得非常丑陋。@Override

我不是一个特别有经验的Java程序员,所以我想我会问是否有约定。思潮?


答案 1

在这种特殊情况下,你应该遵循wilums2的建议,扩展MouseAdapter,而不是实现MouseListener。这些适配器类的目的是,当您只实现接口的某些方法时,不必提供空实现。

更一般地说,简短的答案是“不”,对于如何记录空方法没有标准约定,尽管我通常使用类似的东西

@Override
void foo() {
  // No implementation necessary
}

答案 2

我和你一样做,如果一行里什么都没有留下。也许在一大块“实现单行”之上添加一条评论。