Annotation 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