Класс Introspector
public class Introspector extends Object
Для каждого из этих трёх типов информации Introspector отдельно проанализирует класс и его суперклассы, в поисках явной или неявной информации, и использует эту информацию для построения объекта BeanInfo, который подробно описывает целевой bean.
Для каждого класса «Foo», явная информация может быть доступна, если существует соответствующий класс «FooBeanInfo», который возвращает ненулевое значение при запросе информации. Сначала мы ищем класс BeanInfo, взяв полное имя пакета целевого класса bean и добавив «BeanInfo», чтобы сформировать новое имя класса. Если это не удается, то мы берём последний компонент имени класса и ищем этот класс в каждой из папок, указанных в пути поиска пакета BeanInfo.
Таким образом, для класса, такого как «sun.xyz.OurButton», мы сначала будем искать класс BeanInfo с именем «sun.xyz.OurButtonBeanInfo», и если это не удастся, мы будем искать в каждом пакете в пути поиска BeanInfo класс OurButtonBeanInfo. В соответствии с предложенным поиском, это означало бы поиск «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 и изучение всех свойств, доступных методов, ниже заданной точки "остановки". |
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
- Since:
- 1.2
- См. также:
IGNORE_IMMEDIATE_BEANINFO
public static final int IGNORE_IMMEDIATE_BEANINFO
- Since:
- 1.2
- См. также:
IGNORE_ALL_BEANINFO
public static final int IGNORE_ALL_BEANINFO
- Since:
- 1.2
- См. также:
Подробное описание методов
getBeanInfo
public static BeanInfo getBeanInfo(Class<?> beanClass) throws IntrospectionException
Если информация о BeanInfo для Java-компонента уже была получена, то она извлекается из кэша.
- Параметры:
-
beanClass- Класс компонента, который нужно проанализировать. - Возвращает:
- Объект BeanInfo, описывающий целевой компонент.
- Исключения:
-
IntrospectionException- если во время анализа произошла ошибка. - См. также:
getBeanInfo
public static BeanInfo getBeanInfo(Class<?> beanClass, int flags) throws IntrospectionException
Если информация о BeanInfo для Java-компонента уже была получена с теми же аргументами, то она извлекается из кэша.
- Параметры:
-
beanClass- Класс компонента, который нужно проанализировать. -
flags- Флаги для управления процессом анализа. Если flags == USE_ALL_BEANINFO, то используются все доступные классы BeanInfo. Если flags == IGNORE_IMMEDIATE_BEANINFO, то игнорируется BeanInfo, связанный с указанным beanClass. Если flags == IGNORE_ALL_BEANINFO, то игнорируются все BeanInfo, связанные с указанным beanClass или его родительскими классами. - Возвращает:
- Объект BeanInfo, описывающий целевой компонент.
- Исключения:
-
IntrospectionException- если во время анализа произошла ошибка. - Since:
- 1.2
getBeanInfo
public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass) throws IntrospectionException
Если информация о BeanInfo для Java-компонента уже была получена с теми же аргументами, то она извлекается из кэша.
- Параметры:
-
beanClass- Класс компонента, который нужно проанализировать. -
stopClass- Базовый класс, до которого останавливается анализ. Любые методы/свойства/события в stopClass или его родительских классах будут игнорироваться в анализе. - Возвращает:
- объект BeanInfo для компонента
- Исключения:
-
IntrospectionException- если во время анализа произошла ошибка.
getBeanInfo
public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass, int flags) throws IntrospectionException
- USE_ALL_BEANINFO
- Будут использоваться все обнаруженные BeanInfo.
- IGNORE_IMMEDIATE_BEANINFO
- Будет проигнорирована информация BeanInfo, связанная с указанным классом компонента.
- IGNORE_ALL_BEANINFO
- Будет проигнорирована информация BeanInfo, связанная с указанным классом компонента или его родительскими классами.
Если информация о BeanInfo для Java-компонента уже была получена с теми же аргументами, то она извлекается из кэша.
- Параметры:
-
beanClass- класс компонента, который нужно проанализировать -
stopClass- родительский класс, до которого останавливается анализ -
flags- флаги для управления процессом анализа - Возвращает:
- объект BeanInfo, описывающий целевой компонент
- Исключения:
-
IntrospectionException- если во время анализа произошла ошибка - Since:
- 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()
- Since:
- 1.2
flushFromCaches
public static void flushFromCaches(Class<?> clz)
- Параметры:
-
clz- Объект класса, который нужно очистить. - Исключения:
-
NullPointerException- Если объект Class равен null. - Since:
- 1.2
© 1993, 2023, 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/21/docs/api/java.desktop/java/beans/Introspector.html