Annotation Interface This
@Retention(RUNTIME)
@Target({TYPE_USE,TYPE_PARAMETER})
@PolymorphicQualifier
@TargetLocations({RECEIVER,RETURN})
public @interface This
Write
@This
on the return type of a method that always returns its receiver (
this
). For example:
class MyBuilder {
@This MyBuilder setName(String name) {
this.name = name;
return this;
}
}
Strictly speaking, this is a polymorphic annotation, but when you write it on a return type, the Returns Receiver Checker automatically adds it to the receiver, so the above method is equivalent to:
@This MyBuilder setName(@This MyBuilder this, String name) {
this.name = name;
return this;
}
While it would be natural to make @This
the default annotation for receivers, it leads
to false positives warnings due to https://github.com/typetools/checker-framework/issues/2931,
so this defaulting is currently elided.
- See the Checker Framework Manual:
- Returns Receiver Checker, Qualifier polymorphism