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:
When viewed as a member of a third typeclass A { public void m() {} }
interface B { void m();}
...
m1 = ...; // A.m
m2 = ...; // B.m
assert ! elements.overrides(m1, m2, elements.getTypeElement("A"));
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"));
overrider | the first method, possible overrider | |
overridden | the second method, possibly being overridden | |
type | the type of which the first method is a member |
true if and only if the first method overrides
the second
@jls 8.4.8 Inheritance, Overriding, and Hiding
@jls 9.4.1 Inheritance and Overriding
Diagram: util