2010-08-08 39 views

Trả lời

55

Home.this

Home.this đề cập đến các trường hợp hiện tại của lớp Home.

Cụm từ chính thức cho cụm từ này có vẻ là Qualified this, như được tham chiếu trong Mục 15.8.4 của Đặc tả ngôn ngữ Java.

Trong một lớp đơn giản, hãy nói Home.thisthis sẽ tương đương. Biểu thức này chỉ được sử dụng trong trường hợp có một lớp bên trong, và một cần tham chiếu đến lớp kèm theo.

Ví dụ:

class Hello { 
    class World { 
    public void doSomething() { 
     Hello.this.doAnotherThing(); 
     // Here, "this" alone would refer to the instance of 
     // the World class, so one needs to specify that the 
     // instance of the Hello class is what is being 
     // referred to. 
    } 
    } 

    public void doAnotherThing() { 
    } 
} 

Home.class

Home.class sẽ trở lại với đại diện của lớp Home như một đối tượng Class.

Cụm từ chính thức cho cụm từ này là class literal, như được tham chiếu trong Phần 15.8.2 của Đặc tả ngôn ngữ Java.

Trong hầu hết các trường hợp, biểu thức này được sử dụng khi biểu thức được sử dụng reflection và cần một cách để tham chiếu đến chính lớp đó chứ không phải là phiên bản của lớp.

+0

Giải thích tuyệt vời! –

+0

Có cách nào tương tự để thực hiện điều này trong C# không? – moorara

+0

@MiladIrannejad Không giống như NestingClass.this. Xem http://stackoverflow.com/a/185144/1986241 – Suzi

4

Home.class trả về phiên bản java.lang.Class<Home> tương ứng với lớp Home. Đối tượng này cho phép bạn phản ánh qua lớp (tìm ra phương thức và biến nào của nó, lớp cha mẹ của nó là gì…) và tạo ra các cá thể của lớp.

Home.this chỉ có ý nghĩa nếu bạn đang ở trong lớp lồng nhau của Trang chủ. Ở đây Home.this sẽ trả về đối tượng của lớp Home rằng đối tượng của lớp lồng nhau được lồng vào.