Spec-Zone.ru › OpenJDK 21

Класс Introspector

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

Для каждого из этих трёх типов информации 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(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.

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

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

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

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
Проверяет Java-компонент и получает информацию о его свойствах, методах и событиях.

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

Параметры:
beanClass - Класс компонента, который нужно проанализировать.
Возвращает:
Объект BeanInfo, описывающий целевой компонент.
Исключения:
IntrospectionException - если во время анализа произошла ошибка.
См. также:
  • flushCaches()
  • flushFromCaches(java.lang.Class<?>)

getBeanInfo

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

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

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

Параметры:
beanClass - Класс компонента, который нужно проанализировать.
stopClass - Базовый класс, до которого останавливается анализ. Любые методы/свойства/события в stopClass или его родительских классах будут игнорироваться в анализе.
Возвращает:
объект BeanInfo для компонента
Исключения:
IntrospectionException - если во время анализа произошла ошибка.

getBeanInfo

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

Сначала, если есть менеджер безопасности, вызывается его метод checkPropertiesAccess. Это может привести к SecurityException.

Параметры:
path - Массив имён пакетов.
Исключения:
SecurityException - если менеджер безопасности существует и его метод checkPropertiesAccess не разрешает установку системных свойств.
См. также:
  • SecurityManager.checkPropertiesAccess()

flushCaches

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

flushFromCaches

public static void flushFromCaches(Class<?> clz)
Очищает внутреннюю кэшированную информацию Introspector для заданного класса. Обычно этот метод не требуется. Он обычно нужен только для расширенных инструментов, которые обновляют существующие объекты "Class" на месте и нуждаются в том, чтобы Introspector повторно проанализировал существующий объект Class. Обратите внимание, что очищается только непосредственное состояние, связанное с целевым объектом Class. Мы не очищаем состояние для других объектов Class с тем же именем, а также не очищаем состояние для связанных объектов Class (таких как подклассы), даже если их состояние может включать информацию, полученную косвенно от целевого объекта Class.
Параметры:
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

Spec-Zone.ru

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