为什么我们可以使用’this’作为实例方法参数?
什么是Java中的receiver
参数? Java 8语言规范谈到了this
。
JLS提供了一个提示 :
无论哪种方式,接收器参数仅存在以允许在源代码中表示所表示的对象的类型,从而可以注释该类型。
这两种方法是等效的:
class Test { void m1() { } void m2(Test this) { } }
但是后者允许您添加注释:
void m2(@MyAnnotation Test this) { } //where MyAnnotation can be defined like this for example: @Target(ElementType.TYPE_USE) @interface MyAnnotation {}
Receiver参数允许传递参数并从这些参数中提取其他信息。 明确写入接收器的唯一目的是使注释接收器的类型成为可能。 现在,如果实现AnnotatedElement接口,则可以调用类的getAnnotation()方法来获取注释类型。 有关更多信息,请阅读此内容 。