Tests whether one method, as a member of a given type, overrides another method. When a non-abstract method overrides an abstract one, the former is also said to
implement the latter.
In the simplest and most typical usage, the value of the type
parameter will simply be the class or interface directly enclosing overrider
(the possibly-overriding method). For example, suppose m1
represents the method String.hashCode
and m2
represents Object.hashCode
. We can then ask whether m1
overrides m2
within the class String
(it does):
assert elements.overrides(m1, m2, elements.getTypeElement("java.lang.String"));
A more interesting case can be illustrated by the following example in which a method in type
A
does not override a like-named method in type
B
:
class A { public void m() {} }
interface B { void m(); }
...
m1 = ...; // A.m
m2 = ...; // B.m
assert ! elements.overrides(m1, m2, elements.getTypeElement("A"));
When viewed as a member of a third type
C
, however, the method in
A
does override the one in
B
:
class C extends A implements B {}
...
assert elements.overrides(m1, m2, elements.getTypeElement("C"));