Класс Introspector
public class Introspector extends Object
Для каждого из этих трёх типов информации Introspector отдельно проанализирует класс бина и его суперклассы, ища явную или неявную информацию, а затем использует эту информацию для создания объекта BeanInfo, который всесторонне описывает целевой бин.
Для каждого класса "Foo" может быть доступна явная информация, если существует соответствующий класс "FooBeanInfo", который возвращает ненулевое значение при запросе информации. Сначала мы ищем класс BeanInfo, взяв полное имя целевого класса бина и добавив к нему "BeanInfo" для создания нового имени класса. Если это не сработает, то мы берём последнюю часть имени класса и ищем этот класс в каждом пакете, указанном в пути поиска пакетов BeanInfo.
Таким образом, для класса "sun.xyz.OurButton" мы сначала будем искать класс BeanInfo с именем "sun.xyz.OurButtonBeanInfo", а если это не сработает, мы будем искать класс OurButtonBeanInfo в каждом пакете в пути поиска BeanInfo. С использованием стандартного пути поиска, это будет означать поиск "sun.beans.infos.OurButtonBeanInfo".
Если класс предоставляет явную информацию BeanInfo о себе, то мы добавляем её к информации BeanInfo, полученной из анализа производных классов, но мы рассматриваем явную информацию как определяющую для текущего класса и его базовых классов, и не будем продолжать поиск вверх по цепочке суперклассов.
Если мы не найдём явную информацию BeanInfo в классе, мы будем использовать низкоуровневую рефлексию для изучения методов класса и применять стандартные шаблоны проектирования для идентификации аксессоров свойств, источников событий или публичных методов. Затем мы перейдём к анализу суперкласса класса и добавим информацию из него (и, возможно, по цепочке вверх по суперклассам).
Дополнительную информацию об интроспекции и шаблонах проектирования вы можете найти в спецификации JavaBeans.
- Since:
- 1.1
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
IGNORE_ALL_BEANINFO |
Флаг, указывающий на игнорирование всей информации beaninfo. |
static final int |
IGNORE_IMMEDIATE_BEANINFO |
Флаг, указывающий на игнорирование непосредственной информации beaninfo. |
static final int |
USE_ALL_BEANINFO |
Флаг, указывающий на использование всей информации beaninfo. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static String |
decapitalize |
Утилитарный метод для преобразования строки в обычную капитализацию переменных Java. |
static void |
flushCaches() |
Очистка всех внутренних кэшей Introspector. |
static void |
flushFromCaches |
Очистка внутренней кэшированной информации Introspector для данного класса. |
static BeanInfo |
getBeanInfo |
Интроспекция Java Bean и получение информации о всех его свойствах, открытых методах и событиях. |
static BeanInfo |
getBeanInfo |
Интроспекция Java Bean и получение информации о всех его свойствах, открытых методах и событиях с использованием некоторых управляющих флагов. |
static BeanInfo |
getBeanInfo |
Интроспекция Java Bean и получение информации обо всех его свойствах и открытых методах ниже заданной точки "stop". |
static BeanInfo |
getBeanInfo |
Интроспекция Java Bean и получение информации обо всех его свойствах, открытых методах и событиях ниже заданной stopClass точки, с учётом некоторых управляющих flags. |
static String[] |
getBeanInfoSearchPath() |
Получение списка имён пакетов, которые будут использоваться для поиска классов BeanInfo. |
static void |
setBeanInfoSearchPath |
Изменение списка имён пакетов, которые будут использоваться для поиска классов BeanInfo. |
Подробное описание полей
USE_ALL_BEANINFO
public static final int USE_ALL_BEANINFO
- С момента:
- 1.2
- См. также:
IGNORE_IMMEDIATE_BEANINFO
public static final int IGNORE_IMMEDIATE_BEANINFO
- С момента:
- 1.2
- См. также:
IGNORE_ALL_BEANINFO
public static final int IGNORE_ALL_BEANINFO
- С момента:
- 1.2
- См. также:
Подробное описание методов
getBeanInfo
public static BeanInfo getBeanInfo(Class<?> beanClass) throws IntrospectionException
Если класс BeanInfo для Java-компонента был просмотрен ранее, то класс BeanInfo извлекается из кэша BeanInfo.
- Параметры:
-
beanClass- класс компонента для анализа. - Возвращает:
- Объект BeanInfo, описывающий целевой компонент.
- Выбрасывает:
-
IntrospectionException- если во время интроспекции произошла ошибка. - См. также:
getBeanInfo
public static BeanInfo getBeanInfo(Class<?> beanClass, int flags) throws IntrospectionException
Если класс BeanInfo для Java-компонента был просмотрен ранее с теми же аргументами, то класс BeanInfo извлекается из кэша BeanInfo.
- Параметры:
-
beanClass- класс компонента для анализа. -
flags- Флаги для управления интроспекцией. Если flags == USE_ALL_BEANINFO, то используются все обнаруженные классы BeanInfo. Если flags == IGNORE_IMMEDIATE_BEANINFO, то игнорируется любой BeanInfo, связанный с указанным beanClass. Если flags == IGNORE_ALL_BEANINFO, то игнорируются все BeanInfo, связанные с указанным beanClass или любыми его родительскими классами. - Возвращает:
- Объект BeanInfo, описывающий целевой компонент.
- Выбрасывает:
-
IntrospectionException- если во время интроспекции произошла ошибка. - С момента:
- 1.2
getBeanInfo
public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass) throws IntrospectionException
Если класс BeanInfo для Java-компонента был просмотрен ранее с теми же аргументами, то класс BeanInfo извлекается из кэша BeanInfo.
- Параметры:
-
beanClass- класс компонента для анализа. -
stopClass- Базовый класс, на котором следует остановить анализ. Любые методы/свойства/события в stopClass или его базовых классах будут проигнорированы при анализе. - Возвращает:
- объект BeanInfo для компонента
- Выбрасывает:
-
IntrospectionException- если во время интроспекции произошла ошибка.
getBeanInfo
public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass, int flags) throws IntrospectionException
stopClass с учетом некоторых флагов flags. - USE_ALL_BEANINFO
- Будут использоваться все доступные BeanInfo.
- IGNORE_IMMEDIATE_BEANINFO
- Будет проигнорирован любой BeanInfo, связанный с указанным
beanClass. - IGNORE_ALL_BEANINFO
- Будут проигнорированы все BeanInfo, связанные с указанным
beanClassили любыми его родительскими классами.
stopClass или его родительских классах будут проигнорированы при анализе. Если класс BeanInfo для Java-компонента был просмотрен ранее с теми же аргументами, то класс BeanInfo извлекается из кэша BeanInfo.
- Параметры:
-
beanClass- класс компонента для анализа -
stopClass- родительский класс, на котором следует остановить анализ -
flags- флаги для управления интроспекцией - Возвращает:
- объект BeanInfo, описывающий целевой компонент
- Выбрасывает:
-
IntrospectionException- если во время интроспекции произошла ошибка - С момента:
- 1.7
decapitalize
public static String decapitalize(String name)
Таким образом, "FooBah" становится "fooBah", а "X" — "x", но "URL" остается "URL".
- Параметры:
-
name- строка для декапитализации. - Возвращает:
- Декапитализированная версия строки.
getBeanInfoSearchPath
public static String[] getBeanInfoSearchPath()
- Возвращает:
- Массив имен пакетов, которые будут перебираться для поиска классов BeanInfo. Значение по умолчанию для этого массива зависит от реализации; например, в реализации Sun изначально устанавливается {"sun.beans.infos"}.
setBeanInfoSearchPath
public static void setBeanInfoSearchPath(String[] path)
Во-первых, если существует менеджер безопасности, вызывается его метод checkPropertiesAccess. Это может привести к SecurityException.
- Параметры:
-
path- Массив имен пакетов. - Выбрасывает:
-
SecurityException- если существует менеджер безопасности, и его методcheckPropertiesAccessне разрешает установку системных свойств. - См. также:
flushCaches
public static void flushCaches()
- С момента:
- 1.2
flushFromCaches
public static void flushFromCaches(Class<?> clz)
- Параметры:
-
clz- объект Class, который нужно очистить. - Выбрасывает:
-
NullPointerException- Если объект Class равен null. - С момента:
- 1.2
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/java/beans/Introspector.html