Класс Introspector

public class Introspector
extends Object

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

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

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

Таким образом, для класса такого как «sun.xyz.OurButton», мы бы сначала искали класс BeanInfo с именем «sun.xyz.OurButtonBeanInfo», и если это не удалось, мы бы искали в каждом пакете в пути поиска BeanInfo класс OurButtonBeanInfo. В случае стандартного пути поиска, это означало бы поиск «sun.beans.infos.OurButtonBeanInfo».

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

Если мы не находим явной информации BeanInfo для класса, мы используем низкоуровневый рефлексию для изучения методов класса и применяем стандартные шаблоны проектирования для определения аксессоров свойств, источников событий или публичных методов. Затем мы переходим к анализу суперкласса класса и добавляем информацию из него (и, возможно, до самой вершины цепочки суперклассов).

Для получения дополнительной информации об интроспекции и шаблонах проектирования, пожалуйста, обратитесь к спецификации JavaBeans™.

С момента:
1.1

Поля

Модификатор и тип Поле Описание
static int IGNORE_ALL_BEANINFO

Флаг, указывающий на игнорирование всей информации beaninfo.

static int IGNORE_IMMEDIATE_BEANINFO

Флаг, указывающий на игнорирование непосредственной информации beaninfo.

static 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

Флаг, указывающий на использование всех beaninfo.

Since:
1.2
См. также:
Значения константных полей

IGNORE_IMMEDIATE_BEANINFO

public static final int IGNORE_IMMEDIATE_BEANINFO

Флаг, указывающий на игнорирование непосредственного beaninfo.

Since:
1.2
См. также:
Значения константных полей

IGNORE_ALL_BEANINFO

public static final int IGNORE_ALL_BEANINFO

Флаг, указывающий на игнорирование всего beaninfo.

Since:
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 - если во время интроспекции произошла ошибка.
Since:
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 - если во время интроспекции произошла ошибка
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, 2020, 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/11/docs/api/java.desktop/java/beans/Introspector.html

Spec-Zone .ru
спецификации, руководства, описания, API