2013-02-26 78 views
17

Ví dụ: .class có nghĩa là gì, ví dụ: MyClass.class? Tôi hiểu rằng khi bạn đặt tên của một lớp và điểm được sử dụng để truy cập các trường hoặc phương thức tĩnh của nó, nhưng điều đó không liên quan đến '.class'Nghĩa là gì .class nghĩa là sau tên lớp

+5

Nghiêm túc, là một người bản xứ Tây Ban Nha, tôi cảm thấy xấu hổ về cách mọi người đặt hy vọng của mình lên Google Translator để giúp họ trong các trường hợp như thế này. –

+0

debemos culpar một sự dịch thuộc google. – irreputable

+0

Hoặc thất vọng rằng mặc dù tất cả những thành tựu khác, chúng tôi vẫn chưa đặt ra một con đường để đoàn kết thế giới bằng ngôn ngữ và sự hiểu biết. –

Trả lời

10

SomeClass.class được loại Class<SomeClass> mà bạn có thể sử dụng cho lập trình bằng cách sử dụng reflection API.

Bạn có thể nhận được cùng một loại nếu bạn có một phiên bản của lớp học bằng cách sử dụng instance.getClass().

Bạn có thể xem documentation here. Ví dụ, bạn có thể:

  • có được tên của các lĩnh vực và phương pháp, chú thích, vv
  • phương pháp invoke, được xây dựng để tạo ra các trường hợp mới của lớp
  • lấy tên của lớp, các lớp cha, đóng gói, vv
5

Khi bạn viết .class sau khi một tên lớp, nó tham chiếu đối tượng Class đại diện cho tầng lớp nhất định (chính thức, nó là một tên lớp đen). Loại NombreClase.classClass<NombreClase>.

Ví dụ: NombreClase.class là đối tượng đại diện cho lớp NombreClase khi chạy. Nó là cùng một đối tượng được trả về theo phương pháp getClass() của bất kỳ (trực tiếp) thể hiện của NombreClase.

NombreClase obj = new NombreClase(); 
System.out.println(NombreClase.class.getName()); 
System.out.println(obj.getClass().getName()) 
3

Bạn có thể thêm .class đến tên của bất kỳ lớp để lấy một thể hiện của lớp đối tượng của nó.

Khi bạn sử dụng Integer.class bạn tham chiếu một thể hiện của Class<Integer>, là đối tượng lớp đã nhập.

Tôi luôn nghĩ đây là một thành viên trong lĩnh vực được thêm vào bởi trình biên dịch, nhưng có vẻ như nó thực sự chỉ là cú pháp.

+4

trước khi bạn truy cập một trường tĩnh, bạn cần lớp, vì vậy nó sẽ là hình tròn nếu lớp là trường. trên thực tế, 'A.class' được biên dịch đơn giản thành' Class.forName ("A") ', vì vậy không có gì huyền diệu. – irreputable

+0

Cool ... cảm ơn! – jahroy