Đối tượng Lớp là một loại đối tượng meta mô tả lớp của một đối tượng. Nó được sử dụng hầu hết với khả năng phản chiếu của Java. Bạn có thể coi nó giống như một "bản thiết kế" của lớp thực tế. Vd: bạn có một chiếc xe đẳng cấp như thế này:
public class Car {
public String brand;
}
Sau đó, bạn có thể tạo một đối tượng Lớp mô tả lớp "Xe" của bạn.
Class myCarClass = Class.forName("Car");
Bây giờ bạn có thể thực hiện tất cả các loại truy vấn trên lớp Xe của mình trên đối tượng Lớp đó:
myCarClass.getName() - returns "Car"
myCarClass.getDeclaredField("brand") - returns a Field object describing the "brand" field
và như thế. Mọi đối tượng java đều có một phương thức getClass () trả về đối tượng Lớp mô tả Lớp của đối tượng Java. Vì vậy, bạn có thể làm điều gì đó như:
Car myCar = new Car();
Class myCarClass = myCar.getClass();
Điều này cũng hoạt động đối với các đối tượng bạn không biết, ví dụ: các đối tượng bạn lấy từ bên ngoài:
public void tellMeWhatThisObjectsClassIs(Object obj) {
System.out.println(obj.getClass().getName());
}
Bạn có thể cung cấp phương thức này bất kỳ đối tượng java nào và nó sẽ in ra lớp thực tế của đối tượng mà bạn đã cấp cho nó.
Khi làm việc với Java, hầu hết thời gian bạn không cần phải lo lắng về các đối tượng Class. Tuy nhiên, chúng có một số trường hợp sử dụng tiện dụng. Ví dụ: chúng cho phép bạn cài đặt theo chương trình các đối tượng của một lớp nhất định, được sử dụng thường xuyên để tuần tự hóa và giải mã hóa đối tượng (ví dụ: chuyển đổi các Đối tượng Java qua lại sang / từ XML hoặc JSON).
Class myCarClass = Class.forName("Car");
Car myCar = myCarClass.newInstance();
Bạn cũng có thể sử dụng nó để tìm ra tất cả các trường hoặc phương thức đã khai báo của lớp, v.v., điều này rất hữu ích trong một số trường hợp nhất định. Vì vậy, ví dụ: nếu phương thức của bạn nhận được một đối tượng không xác định và bạn cần biết thêm về nó, chẳng hạn như nếu nó thực thi một số giao diện, v.v., thì lớp Class là bạn của bạn ở đây.
Tóm lại, các lớp Class, Field, Method, v.v. nằm trong gói java.lang.reflect cho phép bạn phân tích các lớp, phương thức, trường đã xác định của mình, tạo phiên bản mới của chúng, gọi phương thức tất cả các loại nội dung khác và chúng cho phép bạn thực hiện điều này một cách linh hoạt trong thời gian chạy.
Class
lớp kế thừa từObject
chính nó.Class.class
trả về mộtClass
đối tượng đại diện choClass
lớp. Bạn có thể phản ánh về sự phản chiếu. ĐẦU CỦA TÔI ASPLODE.