It would be very helpful if Java had a syntax to explicitly specify delegation, something in the lines of: public class Some''''''Class extends Some''''''Super''''''Class, delegates Interface in interfaceImp{ Interface''''''Imp interfaceImp; ... } -- EduardoMadrid or public class Some''''''Class extends Some''''''Super''''''Class, implements Interface { delegate Interface to Interface''''''Imp interfaceImp; ... } -- RafaelAlvarez ----------- This has been implemented as a native Java API, though it's still in a proof-of-concept phase. It's called Delegator and can be found on http://sourceforge.net/projects/delegator/ I've currently (begin 2005) started development again as a masters thesis so more should be available in the coming months. See DelegatorIsDelegationInJava -- KlaasVanSchelven ------------ If you use a good IDE like IntellijIdea, it will take a lot of the burden off your shoulders. For instance, IDEA has a feature called Delegate Methods. ''But, as much as I love IntellijIdea, it would be useful not to clutter the source code with the delegation functions'' PleaseComment ---- Shouldn't this be required too? public class Some''''''Class extends Some''''''Super''''''Class, implements Interface { delegate Interface to I''''''nterfaceImp interfaceImp; public Some''''''Class() { interfaceImp = new I''''''nterfaceImp(); } ... } because I understand that the ''delegate'' keyword is meant to be a short hand for public class Some''''''Class extends Some''''''Super''''''Class, implements Interface { private Interface''''''Imp interfaceImp; public Some''''''Class() { interfaceImp = new I''''''nterfaceImp(); } public Return''''''Type interfaceMethod1(Object param1) { return interfaceImp.interfaceMethod1(param1); } ... } So the interfaceImp has to be instantiated first. I suppose the case for method clash can be resolved as multiple inheritance in C++, i.e. clashed methods have to be explicitly declared. ''Note that Java doesn't provide a way to resolve collisions between methods from different interfaces. I find this disturbing. If methods have the same name they get the same implementation, no matter what context (interface) they are declared in.'' ---- Many years ago I thought this was a good idea. Since then I find myself rarely delegating behavior. I'm not exactly sure why. Perhaps it's a side effect of more refactoring. -- EricHodges ---- I'm a big fan of delegation, and concepts like DelegationInheritance; which is why AutomaticDelegation is one of the ideas I'd like to have implemented in DefnLanguage (i.e. MyFavouriteNonexistantProgrammingLanguage). -- KarlKnechtel ---- Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages: http://www.cs.virginia.edu/~evans/cs655-S00/readings/viega.pdf ---- CategoryAutomated