Heap Flashcards
Class<?>
- Это класс, который предоставляет информацию о классе в виде объекта.
- Каждый класс в Java имеет связанный объект типа Class, который содержит метаданные о классе, такие как имя, поля, методы и т. д.
Символ ? в Class<?> обозначает, что тип, представленный этим объектом, может быть любым
Это полезно, когда тип не важен, или когда мы хотим создать метод, который может работать с объектами разных типов, но в рамках одного класса.
Рефлексия (reflection)
С помощью рефлексии можно получать информацию о классах, методах, полях и конструкторах, а также изменять их значения и вызывать методы, даже если они недоступны в обычном коде (например, если они являются приватными).
Class<?> aClass = source.getClass();
Field[] fields = aClass.getDeclaredFields();
Это механизм, позволяющий программе анализировать и модифицировать свою структуру во время выполнения.
Метаданные
Это данные, которые описывают другие данные. Они обеспечивают контекст и дополнительную информацию о содержимом, структуре или характеристиках данных, позволяя пользователям и системам лучше понимать и использовать эти данные.
Например
В базе данных:
- информация о таблицах, их структурах, типах данных, индексах и отношениях между таблицами;
В файлах:
-заголовок, автор, дата изменения, количество страниц и т. д
В программировании:
- информация о классах, методах, полях и аннотациях. Например, с помощью рефлексии можно получить информацию о классе, включая его поля и методы, которые считаются метаданными класса.
Класс Field
Это часть рефлексивной системы и представляет собой метаданные о поле класса.
Класс предоставляет методы для получения информации о полях (например, имя, тип, модификаторы доступа) и для взаимодействия с этими полями (например, получение или установка их значений).