2014-06-18 19 views
21

Thông số receiver trong Java là gì? Đặc tả ngôn ngữ Java 8 nói về this.Tại sao chúng ta có thể sử dụng 'this' như một tham số method instance?

+5

Chỉ tìm thấy nó trong http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.1. Nó không rõ ràng những gì OP cần nhiều hơn JLS nói mặc dù ... bất kỳ câu trả lời có khả năng chỉ cần reword đó. –

+0

[Từ JLS] (http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.1), đó có phải là thông số chính thức không? Hay tôi hiểu nhầm? – Christian

+2

Tôi muốn nói câu hỏi là khá rõ ràng. – olovb

Trả lời

27

Các JLS cho a hint:

Dù bằng cách nào, các thông số nhận tồn tại chỉ cho phép các loại đối tượng đại diện để được biểu thị trong mã nguồn, do đó loại có thể được chú thích.

Hai phương pháp là tương đương:

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

Tuy nhiên sau này cho phép bạn thêm chú thích:

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

Một ví dụ khác được đưa ra trong http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#d5e14278 không có trường hợp kèm theo của loại bên ngoài có sẵn trong khi xây dựng –

7

thông số Receiver cho phép để vượt qua các đối số và giải nén thêm thông tin từ những lập luận này. Mục đích duy nhất của việc viết người nhận một cách rõ ràng là làm cho nó có thể chú thích loại của người nhận. Bây giờ, nếu bạn triển khai giao diện AnnotatedElement, bạn có thể gọi phương thức getAnnotation() của lớp của bạn để nhận loại chú thích. Để biết thêm thông tin, bạn có thể đọc this.

Các vấn đề liên quan