Yes, that is the challenge, generate the methods when needed by
delegating them to the delegate member. I know that aop (and AspectJ in
particular) is not a generative programming tool, but this can be very
useful, good for the reutilization (since one must not maintain
synchronized the superclass with the subclass when the change in the
former has nothing to do with the overriden methods in the latter) and
it has a lot in common with the current provided static-crosscutting
tools. It is easy to implement in AspectJ too, I feel.

Best regards.

Guntis Ozols wrote:

This idiom is great, too, but the question actually was slightly different.
Is there a shortcut for something like this:

It can be done by using an inter-type declaration on the Runnable
interface. This may sound crazy but what we are actually doing is making an
ITD on every implementer of the interface. The advantage of this approach
is that not only do we guarantee all methods are implemented but also if a
class provides its own implementation that will be used instead of the ITD.
This is why the idiom is often referred to as supplying default interface
method implementations.