Community
Participate
Working Groups
Build Identifier: 20100917-0705 Look at this sample: static interface I1 { void f(); } static class A { public void f(){} } static class AA extends A implements I1 { } static class B implements I1 { public void f(){} } If cursor stays on I1.f() method and you press Ctrl+T. What do you expect? I expect to see some info about A.f() (either as AA.f() or A.f() ). But it is not in list so I assume B.f() is the only implementation of I1.f(). But as you can see it is not true. Reproducible: Always
A is not in the hierarchy of I1, so it cannot be shown. AA is in the hierarchy of I1, but it doesn't implement f(). It only inherits f() from an other supertype. To find such cases, we would have to compute another type hierarchy for each subtype of the original type. That's too expensive for the quick hierarchy. Suggested fix for such code is to override the method in the "joiner" class (AA) and call the super method. That also helps the next reader of the code. *** This bug has been marked as a duplicate of bug 64319 ***