Is there an idiom in Java for empty methods which exist to satisfy an interface?
annotations, idioms, interface, java, oop
Solution
In this particular case you should follow wilums2's advice and extend MouseAdapter instead of implementing MouseListener. The purpose of these adapter classes is so that you don't have to provide empty implementations when you're only implementing some of the methods of an interface.
More generally, the short answer is 'no', there is no standard convention for how to document empty methods, though I generally use something like
@Override
void foo() {
// No implementation necessary
}
Problem
Let's say I have a class `Foo` implementing an interface such as `MouseListener`. The `MouseListener` interface consists of five methods but I only wish to override one of them (`mouseClicked()`). Is there a standard, idiomatic way of formatting the other methods? My inclination was to write the following: ``` @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. } ``` I'm a fan of making it explicit that methods are intentionally blank rather than accidentally left so, but I'm not crazy about all the vertical space given up for basically nothing. I've also seen the following format: ``` 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) {} ``` I'm generally OK with this and I understand the author's intent, but it gets really ugly when the (recommended) `@Override` annotations are added. I'm not a particularly experienced Java coder so I figured I'd ask if there was a convention. Thoughts?