Why can we use 'this' as an instance method parameter?

自作多情 提交于 2019-11-27 19:24:00

The JLS gives a hint:

Either way, the receiver parameter exists solely to allow the type of the represented object to be denoted in source code, so that the type may be annotated.

These two methods are equivalent:

class Test {
    void m1() { }
    void m2(Test this) { }
}

However the latter allows you to add annotations:

void m2(@MyAnnotation Test this) { }
//where MyAnnotation can be defined like this for example:
@Target(ElementType.TYPE_USE) @interface MyAnnotation {}
Debasis

Receiver parameters allow to pass arguments and extract additional information from these arguments. The only purpose of writing the receiver explicitly is to make it possible to annotate the receiver’s type. Now, if you implement the AnnotatedElement interface, you could call the getAnnotation() method of your class to get an annotation type. For more information, you can read this.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!