为什么我们可以使用'this'作为实例方法参数?
2022-09-01 14:15:13
Java中的接收器参数是什么?Java 8 语言规范讨论 .this
Java中的接收器参数是什么?Java 8 语言规范讨论 .this
JLS给出了一个提示:
无论哪种方式,receiver 参数的存在只是为了允许在源代码中表示所表示对象的类型,以便可以对类型进行注释。
这两种方法是等效的:
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 {}
接收器参数允许传递参数并从这些参数中提取其他信息。显式写入接收器的唯一目的是可以注释接收器的类型。现在,如果实现 AnnotatedElement 接口,则可以调用类的 getAnnotation() 方法来获取注释类型。有关更多信息,您可以阅读此内容。