.class
có nghĩa là gì trong Java? Ví dụ: nếu tôi đã tạo một lớp có tên là Print
. Print.class
quay trở lại là gì?.class nghĩa là gì trong Java?
Trả lời
Khi bạn viết .class
sau khi một tên lớp, nó tham chiếu lớp đen - java.lang.Class
đối tượng đại diện cho thông tin về lớp nhất định.
Ví dụ: nếu lớp học của bạn là Print
thì Print.class
là đối tượng đại diện cho lớp Print
khi chạy. Nó là cùng một đối tượng được trả về bởi phương thức getClass()
của bất kỳ cá thể (trực tiếp) nào là Print
.
Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
.class được sử dụng khi không có thể hiện của lớp học.
.getClass() được sử dụng khi có một thể hiện của lớp có sẵn.
object.getClass() trả về lớp của đối tượng đã cho. Ví dụ:
String string = "hello";
System.out.println(string.getClass().toString());
Sản lượng này sẽ
class java.lang.String
Đây là lớp học của đối tượng chuỗi :)
'getClass()' là chỉ hữu ích nếu bạn có một tham chiếu trỏ đến một đối tượng của lớp '' ClassName.class' có thể được sử dụng ngay cả khi lớp không có trường hợp nào.Ví dụ, hãy xem xét 'Math.class', mỗi trường hợp là đúng cho các tình huống nhất định –
lời giải thích tốt đẹp ... Cảm ơn !!!! :) – JAVA
Giải thích rõ ràng. Ngay tại điểm của nó.Làm thế nào bạn đã xác định được sự phân biệt giữa '.class' và' .getClass(). ' – Sevastyan
Tôi nghĩ rằng mấu chốt ở đây là sự hiểu biết sự khác biệt giữa một lớp và một đối tượng. Một đối tượng là một thể hiện của một Class. Nhưng trong một ngôn ngữ hướng đối tượng đầy đủ, một lớp cũng là một đối tượng. Vì vậy, gọi .class
lấy tham chiếu đến đối tượng Lớp của Lớp đó, sau đó có thể được thao tác.
'trong một ngôn ngữ hướng đối tượng đầy đủ, một lớp cũng là một đối tượng'?
Nếu một thể hiện của một đối tượng có sẵn, sau đó cách đơn giản nhất để có được lớp của nó là để gọi Object.getClass()
Các .class
Cú pháp
Nếu loại có sẵn nhưng không có ví dụ sau đó nó có thể để có được một Class bằng cách thêm .class
vào tên của loại. Đây cũng là cách dễ nhất để có được Class cho một kiểu nguyên thủy.
boolean b;
Class c = b.getClass(); // compile-time error
Class c = boolean.class; // correct
Nếu không có ví dụ có sẵn sau đó .class
cú pháp được sử dụng để có được những đối tượng Class tương ứng cho một lớp học nếu không bạn có thể sử dụng getClass() phương pháp để có được đối tượng Class. Vì không có cá thể của kiểu dữ liệu nguyên thủy, chúng ta phải sử dụng cú pháp .class
cho các kiểu dữ liệu nguyên thủy.
package test;
public class Test {
public static void main(String[] args)
{
//there is no instance available for class Test, so use Test.class
System.out.println("Test.class.getName() ::: " + Test.class.getName());
// Now create an instance of class Test use getClass()
Test testObj = new Test();
System.out.println("testObj.getClass().getName() ::: " + testObj.getClass().getName());
//For primitive type
System.out.println("boolean.class.getName() ::: " + boolean.class.getName());
System.out.println("int.class.getName() ::: " + int.class.getName());
System.out.println("char.class.getName() ::: " + char.class.getName());
System.out.println("long.class.getName() ::: " + long.class.getName());
}
}
Chỉ cần làm rõ, phương pháp này' .class' không được đề cập đến các tập tin bytecode bạn thấy sau khi biên dịch mã java hay một sự nhầm lẫn giữa các khái niệm về lớp vs Object trong lý thuyết OOP.
Phương thức '.class' này được sử dụng trong Java để phản ánh mã. Nói chung, bạn có thể thu thập dữ liệu meta cho lớp của mình như tên lớp đầy đủ, danh sách các hằng số, danh sách các trường công khai, v.v.
Kiểm tra những liên kết này (đã đề cập ở trên) để có được tất cả các chi tiết:
https://docs.oracle.com/javase/tutorial/reflect/class/classNew.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html
Thông thường bạn không có kế hoạch về việc sử dụng Reflection ngay lập tức khi bạn bắt đầu xây dựng dự án của bạn. Đó là điều mà bạn biết bạn cần sau khi cố gắng quản lý mã đang hoạt động. Nhiều lần bạn cần nó để quản lý nhiều trường hợp của chương trình của bạn. Có thể bạn muốn xác định từng 'bản sao' cụ thể để xác định xem một cái gì đó đã được xác định hay đếm số hàm hay chỉ đơn giản là ghi lại chi tiết của một cá thể cụ thể của lớp của bạn.
Một lớp chữ là một biểu thức bao gồm tên của một lớp, giao diện, mảng hoặc kiểu nguyên thủy hoặc khoảng trống giả, theo sau là dấu '.' và lớp mã thông báo. Một trong những thay đổi trong JDK 5.0 là rằng java.lang.Class lớp là chung chung, java.lang.Class Class<T>
, do đó:
Class<Print> p = Print.class;
Tài liệu tham khảo ở đây:
https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html
http://docs.oracle.com/javase/tutorial/extra/generics/literals.html
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.2
- 1. "class:" có nghĩa là gì trong C++?
- 2. Nghĩa là gì .class nghĩa là sau tên lớp
- 3. "const class" có nghĩa là gì?
- 4. Dấu @ nghĩa là gì trong java?
- 5. Sự khác nhau giữa Class clazz và Class <?> clazz trong java là gì?
- 6. "Đồng bộ" nghĩa là gì trong Java?
- 7. Colon có nghĩa là gì trong Java?
- 8. Ý nghĩa của .this và .class trong java
- 9. Thuộc tính Java "user.dir" - nghĩa là gì?
- 10. đối tượng Class (java.lang.Class) là gì?
- 11. Ý nghĩa của char zero (0) trong Java là gì?
- 12. Tĩnh {} có nghĩa là gì trong Cú pháp Java?
- 13. ">>>" có nghĩa là gì trong java?
- 14. @link có nghĩa là gì trong tài liệu java/Android?
- 15. Bản đồ <?, ?> có nghĩa là gì trong Java?
- 16. Việc định nghĩa lại các phương thức tĩnh có nghĩa là gì trong Java?
- 17. {} có nghĩa là gì?
- 18. Người mới bắt đầu cơ bản trong Java: 'đối số' có nghĩa là gì trong Java
- 19. Java từ khoá class
- 20. @ nghĩa là gì trong PHP?
- 21. ** nghĩa là gì trong C
- 22. Làm gì? trong C nghĩa là gì?
- 23. Trong jQuery, $ .fn là gì. nghĩa là?
- 24. Tương lai của Class :: DBI là gì?
- 25. 4j có nghĩa là gì?
- 26. chức năng trong Javascript nghĩa là gì?
- 27. Mục đích của cờ truy cập ACC_SUPER trên các tệp Java Class là gì?
- 28. "Chuỗi ..." trong java là gì?
- 29. /([^.]*)\.(.*)/ có nghĩa là gì?
- 30. "\\. \", "\ ?? \", "\\? \", "\\" có nghĩa là gì?
http://docs.oracle.com/javase/tutorial/reflect/class/classNew.html –
Tôi e rằng tôi không hiểu hết những gì bạn đang hỏi. Nếu bạn có thể xây dựng thêm một chút, ai đó có thể cung cấp cho bạn thông tin hữu ích hơn –
Điều này chắc chắn trông giống như một câu hỏi thực sự đối với tôi. Tôi chỉ tự hỏi câu hỏi này, và thấy mình ở đây sau khi tìm kiếm nhanh trên Google. Tôi đoán tôi không nên làm phiền nếu tôi biết rằng câu hỏi của tôi là không có thật! –