Hanno Schlichting wrote:
On Wed, Nov 25, 2009 at 9:52 PM, Tres Seaver <tseaver@palladion.com> wrote:
Hmm, I may be missing something here, but if Foo implements IFoo, then the getAdapter lookup for it will short circuit, leading you into infinite recursion. Except that it doesn't:
[snip example]
which strikes me as wildly disjoint: the IFoo behavior is "expected" (short-circuit the lookup if the object already provides the interface), while the getAdapter behavior is a puzzlement.
This has been mentioned numerous times as one of those odd and unexpected differences between the IFoo vs. get/queryAdapter semantic. IIRC the only use-case I ever heard of for the getAdapter semantic, was the possibility to override the behavior promised by the interface with a different adapter without touching the class that implements the interface directly.
I think changing this falls into the category of: Small backwards incompatibly that seem worthwhile to make the behavior consistent and expected.
I think if we deprecate the getAdapter API entirely by making it unnecessary, we'd not need to change it either. Regards, Martijn