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.
- Начиная с:
- 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-компонента и получить сведения обо всех его свойствах, открытых методах и событиях. |
static BeanInfo |
getBeanInfo |
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах, открытых методах и событиях с учётом некоторых управляющих флагов. |
static BeanInfo |
getBeanInfo |
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах и открытых методах до заданной точки «остановки». |
static BeanInfo |
getBeanInfo |
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах, открытых методах и событиях до заданной точки 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)
- Параметры:
-
path— массив имён пакетов.
flushCaches
public static void flushCaches()
- Начиная с:
- 1.2
flushFromCaches
public static void flushFromCaches(Class<?> clz)
- Параметры:
-
clz— объект Class, кэш которого нужно очистить. - Выбрасывает:
-
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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/beans/Introspector.html