Spec-Zone.ru › OpenJDK 27

Класс Introspector

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

Для каждого из этих трех видов сведений Introspector отдельно анализирует класс bean-компонента и его суперклассы, выявляя явную или неявную информацию, и использует ее для создания объекта BeanInfo, который исчерпывающе описывает целевой bean-компонент.

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

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

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 Bean и получает сведения обо всех его свойствах, доступных методах и событиях.

Если для Java Bean ранее выполнялась интроспекция класса BeanInfo, этот класс BeanInfo извлекается из кэша BeanInfo.

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

getBeanInfo

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

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

Параметры:
beanClass — класс bean-компонента, подлежащий анализу.
flags — флаги управления интроспекцией. Если flags == USE_ALL_BEANINFO, используются все обнаруженные классы BeanInfo. Если flags == IGNORE_IMMEDIATE_BEANINFO, игнорируются все сведения BeanInfo, связанные с указанным beanClass. Если flags == IGNORE_ALL_BEANINFO, игнорируются все сведения BeanInfo, связанные с указанным beanClass или любым из его родительских классов.
Возвращает:
Объект BeanInfo с описанием целевого bean-компонента.
Вызывает:
IntrospectionException — если во время интроспекции возникает исключение.
Начиная с:
1.2

getBeanInfo

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

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

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

getBeanInfo

public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass, int flags) throws IntrospectionException
Выполняет интроспекцию Java Bean и получает сведения обо всех его свойствах, доступных методах и событиях до указанной точки stopClass с учетом управляющих flags.
USE_ALL_BEANINFO
Будут использоваться все обнаруженные сведения BeanInfo.
IGNORE_IMMEDIATE_BEANINFO
Будут игнорироваться все сведения BeanInfo, связанные с указанным beanClass.
IGNORE_ALL_BEANINFO
Будут игнорироваться все сведения BeanInfo, связанные с указанным beanClass или любым из его родительских классов.
Методы, свойства и события класса stopClass и его родительских классов не будут учитываться при анализе.

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

Параметры:
beanClass — класс bean-компонента, подлежащий анализу
stopClass — родительский класс, на котором нужно остановить анализ
flags — флаги управления интроспекцией
Возвращает:
объект BeanInfo с описанием целевого bean-компонента
Вызывает:
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, 2026, 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.

Spec-Zone.ru

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