§9.2.2.(a) Substitutions for type anchors
Only two substitutions are considered for determining anchor identity:
- If a method signature uses
this
as the anchor of any of its types,
type checking an application of this method performs the following substitutions:
A simple this
expression is substituted by the actual call target
of the method application.
A qualified Outer.this
expression is substituted by the corresponding
enclosing instance of the call target.
- Assignments from a
final
identifier to another final
identifier are transitively followed, i.e., if t1, t2
are final,
after an assignment t1=t2
the types C<@t1>
and
C<@t2>
are considered identical. Otherwise C<@t1>
and C<@t2>
are incommensurable.
Attaching an actual parameter to a formal parameter in a method call is also considered
as an assignment with respect to this rule.