Another reflection bug; compatibility results
Godmar Back
kaffe@rufus.w3.org
Thu, 15 Jun 2000 11:32:53 -0600 (MDT)
Okay, try it again now.
We now also search superinterfaces if you invoke Class.getMethod() on
an interface class.
However, since there's no notion of superinterfaces at the bytecode level,
there's also no ordering - this means that I believe that the result of
such a getMethod call is not and in fact cannot be well-defined. We may
or may not match what the JDK returns. I hadn't realized that before.
Also, since there no ordering of superinterfaces, there's also no notion
of "overriding" - hence both Kaffe and JDK report methods in all
superinterfaces. However, getMethod will stop looking at the first
match. This leads (in both JDK and Kaffe) to what you call "Non-equality"
in your test.
However, I believe that none of this should have an adverse impact
on the interface compatibility checking you're doing. For instance,
you should be able to easily figure out what's what by checking whether
a class inherits a method or not - one way to find that out is to
check whether getClass().getMethod().getClass() != getClass().
- Godmar