Класс 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", а если это не сработает, то будем искать в каждой папке в пути поиска BeanInfo класс OurButtonBeanInfo. При использовании стандартного пути поиска, это означало бы поиск класса "sun.beans.infos.OurButtonBeanInfo".
Если класс предоставляет явную информацию BeanInfo о себе, то мы добавляем её к информации BeanInfo, полученной из анализа производных классов, но мы рассматриваем явную информацию как определяющую для текущего класса и его базовых классов, и не продолжаем поиск в цепочке суперклассов.
Если мы не найдём явную информацию BeanInfo в классе, мы используем низкоуровневый рефлексию для изучения методов класса и применяем стандартные шаблоны проектирования для идентификации аксессоров свойств, источников событий или публичных методов. Затем мы переходим к анализу суперкласса класса и добавляем информацию из него (и, возможно, вверх по цепочке суперклассов).
Для получения дополнительной информации об интроспекции и шаблонах проектирования, пожалуйста, обратитесь к спецификации JavaBeans™.
Сводка полей
| Модификатор и тип | Поле и описание |
|---|---|
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,
Class<?> stopClass) Провести интроспекцию Java бин и получить всю информацию о его свойствах, доступных методах, ниже заданной точки "остановки". |
static BeanInfo |
getBeanInfo(Class<?> beanClass,
Class<?> stopClass,
int flags) Провести интроспекцию Java Bean и получить информацию о всех его свойствах, доступных методах и событиях, ниже заданной |
static BeanInfo |
getBeanInfo(Class<?> beanClass,
int flags) Провести интроспекцию Java бин и получить информацию о всех его свойствах, доступных методах и событиях, с учетом некоторых управляющих флагов. |
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.
- См. также:
- Значения константных полей
IGNORE_IMMEDIATE_BEANINFO
public static final int IGNORE_IMMEDIATE_BEANINFO
Флаг, указывающий на игнорирование непосредственного beaninfo.
- См. также:
- Значения константных полей
IGNORE_ALL_BEANINFO
public static final int IGNORE_ALL_BEANINFO
Флаг, указывающий на игнорирование всех beaninfo.
- См. также:
- Значения константных полей
Методы
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- если произошла ошибка при анализе.
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.
flushFromCaches
public static void flushFromCaches(Class<?> clz)
Очистить внутреннюю кэшированную информацию Introspector для данного класса. Этот метод обычно не требуется. Он обычно необходим только для продвинутых инструментов, которые обновляют существующие объекты "Class" на месте и нуждаются в том, чтобы Introspector повторно проанализировал существующий объект Class. Обратите внимание, что очищается только непосредственное состояние, связанное с целевым объектом Class. Мы не очищаем состояние для других объектов Class с тем же именем, а также не очищаем состояние для каких-либо связанных объектов Class (например, подклассов), даже если их состояние может содержать информацию, косвенно полученную от целевого объекта Class.
- Параметры:
-
clz- Объект класса, который следует очистить. - Исключения:
-
NullPointerException- Если объект класса равен null.
© 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.