Annotation Type OverridingMethodsMustInvokeSuper
Indicates that any concrete method that overrides the annotated method, directly or indirectly,
must invoke
super.theAnnotatedMethod(...)
at some point. This does not necessarily
require an unconditional call; any matching call appearing directly within the method body
(not inside an intervening class or lambda expression) is acceptable.
If the overriding method is itself overridable, applying this annotation to that method is technically redundant, but may be helpful to readers.
Preferred: usually, a better solution is to make the method final
, and have its
implementation delegate to a second concrete method which is overridable (or to a function
object which subclasses can specify). "Mandatory" statements remain in the final method while
"optional" code moves out. This is the only way to make sure the statements will be executed
unconditionally.