Spec-Zone.ru › OpenJDK 25

Introspector

java.lang.Object
java.beans.Introspector
public class Introspector extends Object
Класс Introspector предоставляет стандартный способ для инструментов получать сведения о свойствах, событиях и методах, поддерживаемых целевым Java-компонентом.

Для каждого из этих трёх видов сведений 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(String name)
Вспомогательный метод, преобразующий строку в формат написания имён переменных Java.
static void flushCaches()
Очистить все внутренние кэши Introspector.
static void flushFromCaches(Class<?> clz)
Очистить внутренние кэшированные сведения Introspector для указанного класса.
static BeanInfo getBeanInfo(Class<?> beanClass)
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах, открытых методах и событиях.
static BeanInfo getBeanInfo(Class<?> beanClass, int flags)
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах, открытых методах и событиях с учётом некоторых управляющих флагов.
static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass)
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах и открытых методах до заданной точки «остановки».
static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass, int flags)
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах, открытых методах и событиях до заданной точки stopClass с учётом некоторых управляющих flags.
static String[] getBeanInfoSearchPath()
Получить список имён пакетов, используемых для поиска классов BeanInfo.
static void setBeanInfoSearchPath(String[] path)
Изменить список имён пакетов, используемых для поиска классов BeanInfo.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

USE_ALL_BEANINFO

public static final int USE_ALL_BEANINFO
Флаг, указывающий на необходимость использовать все сведения beaninfo.
Начиная с:
1.2
См. также:
  • Значения константных полей

IGNORE_IMMEDIATE_BEANINFO

public static final int IGNORE_IMMEDIATE_BEANINFO
Флаг, указывающий на необходимость игнорировать непосредственные сведения beaninfo.
Начиная с:
1.2
См. также:
  • Значения константных полей

IGNORE_ALL_BEANINFO

public static final int IGNORE_ALL_BEANINFO
Флаг, указывающий на необходимость игнорировать все сведения beaninfo.
Начиная с:
1.2
См. также:
  • Значения константных полей

Подробное описание методов

getBeanInfo

public static BeanInfo getBeanInfo(Class<?> beanClass) throws IntrospectionException
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах, открытых методах и событиях.

Если класс BeanInfo для Java-компонента уже проходил интроспекцию, класс BeanInfo извлекается из кэша BeanInfo.

Параметры:
beanClass — класс компонента для анализа.
Возвращает:
Объект BeanInfo, описывающий целевой компонент.
Выбрасывает:
IntrospectionException — если во время интроспекции возникает исключение.
См. также:
  • flushCaches()
  • flushFromCaches(Class)

getBeanInfo

public static BeanInfo getBeanInfo(Class<?> beanClass, int flags) throws IntrospectionException
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах, открытых методах и событиях с учётом некоторых управляющих флагов.

Если класс 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
Выполнить интроспекцию Java-компонента и получить все сведения о его свойствах и открытых методах до заданной точки «остановки».

Если класс BeanInfo для Java-компонента уже проходил интроспекцию с теми же аргументами, класс BeanInfo извлекается из кэша BeanInfo.

Параметры:
beanClass — класс компонента для анализа.
stopClass — базовый класс, на котором следует остановить анализ. Методы, свойства и события класса stopClass и его базовых классов игнорируются при анализе.
Возвращает:
объект BeanInfo для компонента
Выбрасывает:
IntrospectionException — если во время интроспекции возникает исключение.

getBeanInfo

public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass, int flags) throws IntrospectionException
Выполнить интроспекцию Java-компонента и получить сведения обо всех его свойствах, открытых методах и событиях до заданной точки 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)
Вспомогательный метод, преобразующий строку в формат написания имён переменных Java. Обычно это означает преобразование первого символа из верхнего регистра в нижний, но в особом (редком) случае, когда символов больше одного и первые два символа — в верхнем регистре, строка остаётся без изменений.

Таким образом, «FooBah» преобразуется в «fooBah», а «X» — в «x», но «URL» остаётся «URL».

Параметры:
name — строка, для которой нужно преобразовать первый символ в нижний регистр.
Возвращает:
Строка с первым символом в нижнем регистре.

getBeanInfoSearchPath

public static String[] getBeanInfoSearchPath()
Получить список имён пакетов, используемых для поиска классов BeanInfo.
Возвращает:
Массив имён пакетов, в которых будут выполняться поиски классов BeanInfo. Значение по умолчанию для этого массива зависит от реализации; например, реализация Sun изначально задаёт {"sun.beans.infos"}.

setBeanInfoSearchPath

public static void setBeanInfoSearchPath(String[] path)
Изменить список имён пакетов, используемых для поиска классов BeanInfo. Поведение этого метода не определено, если параметр path равен null.
Параметры:
path — массив имён пакетов.

flushCaches

public static void flushCaches()
Очистить все внутренние кэши Introspector. Обычно этот метод не требуется. Он нужен, как правило, только продвинутым инструментам, которые обновляют существующие объекты «Class» на месте и должны заставить Introspector повторно проанализировать существующие объекты Class.
Начиная с:
1.2

flushFromCaches

public static void flushFromCaches(Class<?> clz)
Очистить внутренние кэшированные сведения Introspector для указанного класса. Обычно этот метод не требуется. Он нужен, как правило, только продвинутым инструментам, которые обновляют существующие объекты «Class» на месте и должны заставить Introspector повторно проанализировать существующий объект Class. Обратите внимание, что очищается только состояние, непосредственно связанное с целевым объектом Class. Состояние других объектов Class с тем же именем не очищается; также не очищается состояние связанных объектов Class (например, подклассов), даже если их состояние может включать сведения, косвенно полученные из целевого объекта Class.
Параметры:
clz — объект Class, кэш которого нужно очистить.
Выбрасывает:
NullPointerException — если объект Class равен null.
Начиная с:
1.2

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, обзор концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API