Класс Introspector
public class Introspector extends Object
Для каждого из этих трёх видов информации Introspector отдельно проанализирует класс и суперклассы целевого bean, ища явную или неявную информацию, и использует эту информацию для построения объекта 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.
- С:
- 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
- С момента:
- 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
- USE_ALL_BEANINFO
- Будут использоваться все обнаруженные BeanInfo.
- IGNORE_IMMEDIATE_BEANINFO
- Будет проигнорирована любая BeanInfo, связанная с указанным классом.
- IGNORE_ALL_BEANINFO
- Будет проигнорирована любая BeanInfo, связанная с указанным классом или любым его родительским классом.
Если класс 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)
- Параметры:
-
path- Массив имен пакетов.
flushCaches
public static void flushCaches()
- С момента:
- 1.2
flushFromCaches
public static void flushFromCaches(Class<?> clz)
- Параметры:
-
clz- Объект класса, который нужно очистить. - Исключение:
-
NullPointerException- Если объект Class равен null. - С момента:
- 1.2
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/beans/Introspector.html