In general, Java developers most commonly use helper methods for this sort of thing. It's flexible and relatively modular, and really not so bad as you think.
A related technique is to use a wrapper object; a class that contains an instance of the class of interest, implements the same interfaces, and delegates most calls through to the contained instance, perhaps adding some methods along the way. Some IDEs (IntelliJ IDEA, certainly) have built-in tools that make creating this sort of delegating wrapper painless. Then whenever you receive a reference to an instance of the class of interest, you construct an instance of the delegator around it before doing any further processing.
If you really want something more interesting, there is always Aspect-Oriented Programming (AOP), which refers to tools and techniques for injecting new code into existing code based on various criteria at runtime. It is possible that you could use AOP to do something like this; for example, by adding an interface to a class, and a method that implements it. You'd have to cast the objects to the interface at compile time to use the method.