Spec-Zone.ru › OpenJDK 17

Класс Introspector

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

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

Для каждого класса "Foo" может быть доступна явная информация, если существует соответствующий класс "FooBeanInfo", который возвращает ненулевое значение при запросе информации. Сначала мы ищем класс BeanInfo, взяв полное имя целевого класса бина и добавив к нему "BeanInfo" для создания нового имени класса. Если это не сработает, то мы берём последнюю часть имени класса и ищем этот класс в каждом пакете, указанном в пути поиска пакетов BeanInfo.

Таким образом, для класса "sun.xyz.OurButton" мы сначала будем искать класс BeanInfo с именем "sun.xyz.OurButtonBeanInfo", а если это не сработает, мы будем искать класс OurButtonBeanInfo в каждом пакете в пути поиска BeanInfo. С использованием стандартного пути поиска, это будет означать поиск "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 и получение информации обо всех его свойствах и открытых методах ниже заданной точки "stop".
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
Флаг, указывающий на использование всех 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(java.lang.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.

Во-первых, если существует менеджер безопасности, вызывается его метод checkPropertiesAccess. Это может привести к SecurityException.

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

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

© 1993, 2021, 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/17/docs/api/java.desktop/java/beans/Introspector.html

Spec-Zone.ru

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