Obiekt Class jest rodzajem meta obiektu opisującego klasę obiektu. Jest używany głównie z możliwościami odbicia w Javie. Możesz myśleć o tym jak o „planie” aktualnej klasy. Np. Masz taki samochód klasy:
public class Car {
public String brand;
}
Następnie możesz skonstruować obiekt Class, który opisuje Twoją klasę „Car”.
Class myCarClass = Class.forName("Car");
Teraz możesz wykonywać różnego rodzaju zapytania dotyczące klasy samochodu w tym obiekcie klasy:
myCarClass.getName() - returns "Car"
myCarClass.getDeclaredField("brand") - returns a Field object describing the "brand" field
i tak dalej. Każdy obiekt Java ma metodę getClass (), która zwraca obiekt Class opisujący klasę obiektu Java. Możesz więc zrobić coś takiego:
Car myCar = new Car();
Class myCarClass = myCar.getClass();
Działa to również w przypadku obiektów, których nie znasz, np. Obiektów, które dostałeś z zewnątrz:
public void tellMeWhatThisObjectsClassIs(Object obj) {
System.out.println(obj.getClass().getName());
}
Możesz przesłać tę metodę do dowolnego obiektu Java, a wydrukuje ona aktualną klasę obiektu, który jej przekazałeś.
Podczas pracy z Javą w większości przypadków nie musisz martwić się o obiekty Class. Mają jednak kilka przydatnych przypadków użycia. Np. Pozwalają na programistyczne instancjowanie obiektów określonej klasy, która jest często używana do serializacji i deserializacji obiektów (np. Konwertowanie obiektów Java w obie strony do / z XML lub JSON).
Class myCarClass = Class.forName("Car");
Car myCar = myCarClass.newInstance();
Możesz go również użyć do znalezienia wszystkich zadeklarowanych pól lub metod swojej klasy itp., Co jest bardzo przydatne w niektórych przypadkach. Na przykład, jeśli twoja metoda otrzyma nieznany obiekt i musisz wiedzieć o nim więcej, na przykład jeśli zawiera jakiś interfejs itp., Klasa Class jest tutaj twoim przyjacielem.
Krótko mówiąc, klasy Class, Field, Method itp., Które znajdują się w pakiecie java.lang.reflect, pozwalają analizować zdefiniowane przez Ciebie klasy, metody, pola, tworzyć nowe ich instancje, wywoływać metody wszelkiego rodzaju innych rzeczy i pozwalają ci to robić dynamicznie w czasie wykonywania.
Class
Klasa dziedziczy poObject
sobie.Class.class
zwracaClass
obiekt, który reprezentujeClass
klasę. Możesz zastanowić się nad refleksją. MY HEAD ASPLODE.