Об'єкт Class - це свого роду мета-об'єкт, що описує клас об'єкта. Він використовується переважно з можливостями відображення Java. Ви можете сприймати це як "план" власне класу. Наприклад, у вас є такий клас автомобіля:
public class Car {
public String brand;
}
Потім ви можете побудувати об’єкт Class, який описує ваш клас "Car".
Class myCarClass = Class.forName("Car");
Тепер ви можете робити всілякі запити щодо вашого класу Car щодо цього об’єкта Class:
myCarClass.getName() - returns "Car"
myCarClass.getDeclaredField("brand") - returns a Field object describing the "brand" field
і так далі. Кожен об'єкт Java має метод getClass (), який повертає об'єкт Class, що описує клас об'єкта Java. Тож ви можете зробити щось на зразок:
Car myCar = new Car();
Class myCarClass = myCar.getClass();
Це також працює для об’єктів, яких ви не знаєте, наприклад, об’єктів, які ви отримуєте ззовні:
public void tellMeWhatThisObjectsClassIs(Object obj) {
System.out.println(obj.getClass().getName());
}
Ви можете подати цей метод будь-якому об'єкту Java, і він буде друкувати фактичний клас об'єкта, який ви йому надали.
Працюючи з Java, більшу частину часу не потрібно турбуватися про об’єкти класу. У них є кілька зручних випадків використання. Наприклад, вони дозволяють програмно інстанціювати об'єкти певного класу, який часто використовується для серіалізації та десеріалізації об'єктів (наприклад, перетворення об'єктів Java вперед і назад у / з XML або JSON).
Class myCarClass = Class.forName("Car");
Car myCar = myCarClass.newInstance();
Ви також можете скористатися ним, щоб дізнатись усі заявлені поля чи методи вашого класу тощо, що дуже корисно в певних випадках. Так, наприклад, якщо ваш метод отримує невідомий об’єкт, і ви повинні знати про нього більше, наприклад, якщо він імплементує якийсь інтерфейс тощо, клас Class - ваш друг тут.
Коротше кажучи, класи, поле, метод тощо, що знаходяться в пакеті java.lang.reflect, дозволяють аналізувати визначені класи, методи, поля, створювати нові їх екземпляри, викликати методи всіляких інших речей і вони дозволяють робити це динамічно під час виконання.
Class
Клас успадковує відObject
себе.Class.class
повертаєClass
об'єкт, що представляєClass
клас. Ви можете розмірковувати над роздумами. МОЯ ГОЛОВА АСПЛОД.