While waiting for support of closure in Java, anonymous classes is the most convenient way to inject a behavior without having to create a dedicated class. But those anonymous inner classes should be used only if the behavior can be accomplished in a few lines. With more complex code, a named class is called for.
The following code snippet illustrates this rule with a threshold of 5:
button.addActionListener(new ActionListener() { // Non-Compliant - 6 lines till closing '}'
public void actionPerformed(ActionEvent e) {
doSomething1();
doSomething2();
}
});