Пакет java.beans
PropertyChangeEvent). Однако большинство классов этого пакета предназначено для редактора бинов (то есть среды разработки для настройки и сборки бинов с целью создания приложения). В частности, эти классы помогают редактору бинов создавать пользовательский интерфейс, с помощью которого пользователь может настраивать бин. Например, бин может содержать свойство специального типа, с которым редактор бинов не умеет работать. Используя интерфейс PropertyEditor, разработчик бина может предоставить редактор для этого специального типа. Чтобы свести к минимуму ресурсы, используемые бином, классы, применяемые редакторами бинов, загружаются только во время редактирования бина. Они не нужны во время работы бина в приложении, поэтому не загружаются. Эта информация хранится в так называемом bean-info (см. BeanInfo).
Если не указано иное, значения null и пустые строки недопустимы в качестве параметров методов этого пакета. При использовании таких параметров можно ожидать исключений.
Долговременное сохранение
Начиная с версии 1.4 пакетjava.beans поддерживает долговременное сохранение — чтение и запись бина в виде текстового представления значений его свойств. Значения свойств рассматриваются как бины и рекурсивно считываются или записываются, чтобы сохранить их общедоступное состояние. Такой подход подходит для долговременного хранения, поскольку опирается только на открытый API, а не на закрытую реализацию, которая может измениться.
Примечание: Схема сохранения не может автоматически создавать пользовательские внутренние классы, например те, которые могут использоваться в качестве обработчиков событий. Используя класс EventHandler вместо внутренних классов для пользовательских обработчиков событий, можно избежать этой проблемы. Бины считываются и записываются в формате XML с помощью классов XMLDecoder и XMLEncoder соответственно. Важная особенность схемы сохранения состоит в том, что для чтения бина не требуется специальных знаний о нем.
С другой стороны, для записи бина иногда требуются специальные знания о его типе. Если состояние бина можно выразить только с помощью конструктора без аргументов и открытых методов получения и установки значений свойств, специальные знания не требуются. В противном случае для бина необходим пользовательский делегат сохранения — объект, отвечающий за запись бинов определенного типа. Для всех классов JDK, являющихся потомками java.awt.Component, а также для всех их свойств автоматически предоставляются делегаты сохранения.
Если вам нужно (или вы решили) предоставить делегат сохранения для бина, это можно сделать с помощью экземпляра DefaultPersistenceDelegate или создав собственный подкласс PersistenceDelegate. Если единственная причина, по которой бину требуется делегат сохранения, заключается в том, что вы хотите вызвать конструктор бина с аргументами, содержащими значения свойств, можно создать делегат сохранения бина с помощью конструктора DefaultPersistenceDelegate с одним аргументом. В противном случае необходимо реализовать собственный делегат сохранения. Для этого могут понадобиться следующие классы:
PersistenceDelegate- Абстрактный класс, от которого наследуются все делегаты сохранения. Ваш подкласс должен использовать свои знания о типе бина, чтобы предоставить необходимые
StatementиExpressionдля создания бина и восстановления его состояния. Statement- Представляет вызов одного метода для объекта. Содержит набор аргументов метода.
Expression- Подкласс
Statement, используемый для методов, возвращающих значение.
Создав делегат сохранения, зарегистрируйте его с помощью метода setPersistenceDelegate класса XMLEncoder.
Связанная документация
Обзорную документацию, сведения об архитектуре и учебные материалы см. здесь:- JavaBeans — раздел Учебника по Java.
- Долговременное сохранение — статья в The Swing Connection.
- Версия:
- 1.1
| Класс | Описание |
|---|---|
| AppletInitializer | Устарел и будет удален: этот элемент API подлежит удалению в будущей версии. API апплетов устарел. |
| BeanDescriptor | BeanDescriptor предоставляет общую информацию о «бине», включая его класс Java, отображаемое имя и т. д. |
| BeanInfo | Используйте интерфейс BeanInfo для создания класса BeanInfo и предоставления явной информации о методах, свойствах, событиях и других особенностях ваших бинов. |
| BeanProperty | Аннотация для указания некоторой информации о свойствах классов BeanInfo, создаваемых автоматически. |
| Beans | Этот класс предоставляет несколько методов общего назначения для управления бинами. |
| ConstructorProperties | Аннотация конструктора, указывающая, каким методам получения значений свойств созданного объекта соответствуют параметры этого конструктора. |
| Customizer | Класс средства настройки предоставляет полноценный пользовательский графический интерфейс для настройки целевого JavaBean. |
| DefaultPersistenceDelegate | DefaultPersistenceDelegate — это конкретная реализация абстрактного класса PersistenceDelegate и делегат, используемый по умолчанию для классов, о которых нет доступной информации. |
| DesignMode | Этот интерфейс предназначен для реализации экземплярами java.beans.beancontext.BeanContext или делегирования ими, чтобы передавать текущее свойство "designTime" вложенной иерархии экземпляров java.beans.beancontext.BeanContextChild. |
| Encoder | Encoder — это класс, который можно использовать для создания файлов или потоков, кодирующих состояние коллекции JavaBeans с помощью их открытых API. |
| EventHandler | Класс EventHandler поддерживает динамическое создание прослушивателей событий, методы которых выполняют простую инструкцию с использованием входящего объекта события и целевого объекта. |
| EventSetDescriptor | EventSetDescriptor описывает группу событий, генерируемых заданным Java-бином. |
| ExceptionListener | ExceptionListener получает уведомления о внутренних исключениях. |
| Expression | Объект Expression представляет собой простое выражение, в котором к целевому объекту применяется один метод с набором аргументов для получения результата, как в "a.getFoo()". |
| FeatureDescriptor | Класс FeatureDescriptor является общим базовым классом для PropertyDescriptor, EventSetDescriptor, MethodDescriptor и т. д. |
| IndexedPropertyChangeEvent | Событие "IndexedPropertyChange" доставляется при каждом изменении индексированного связанного свойства компонентом, соответствующим спецификации JavaBeans (то есть «бином»). |
| IndexedPropertyDescriptor | IndexedPropertyDescriptor описывает свойство, ведущее себя как массив и имеющее индексированный метод чтения и/или записи для доступа к отдельным элементам массива. |
| IntrospectionException | Выбрасывается при возникновении исключения во время интроспекции. |
| Introspector | Класс Introspector предоставляет стандартный способ получения инструментами сведений о свойствах, событиях и методах целевого Java-бина. |
| JavaBean | Аннотация для указания некоторой информации о классах BeanInfo, создаваемых автоматически. |
| MethodDescriptor | MethodDescriptor описывает конкретный метод, предоставляемый Java-бином для внешнего доступа из других компонентов. |
| ParameterDescriptor | Класс ParameterDescriptor позволяет разработчикам бинов предоставлять дополнительную информацию о каждом параметре сверх низкоуровневой информации о типе, предоставляемой классом java.lang.reflect.Method. |
| PersistenceDelegate | Класс PersistenceDelegate отвечает за представление состояния экземпляра заданного класса с помощью методов его открытого API. |
| PropertyChangeEvent | Событие "PropertyChange" доставляется при изменении бином «связанного» или «ограниченного» свойства. |
| PropertyChangeListener | Событие "PropertyChange" генерируется при изменении бином «связанного» свойства. |
| PropertyChangeListenerProxy | Класс, расширяющий EventListenerProxy специально для добавления PropertyChangeListener со «связанным» свойством. |
| PropertyChangeSupport | Это вспомогательный класс, который могут использовать бины, поддерживающие связанные свойства. |
| PropertyDescriptor | PropertyDescriptor описывает одно свойство, предоставляемое Java-бином через пару методов доступа. |
| PropertyEditor | Класс PropertyEditor предоставляет поддержку графическим интерфейсам, позволяющим пользователям редактировать значение свойства заданного типа. |
| PropertyEditorManager | PropertyEditorManager можно использовать для поиска редактора свойств для любого заданного имени типа. |
| PropertyEditorSupport | Это вспомогательный класс для создания редакторов свойств. |
| PropertyVetoException | PropertyVetoException выбрасывается, если предлагаемое изменение свойства содержит недопустимое значение. |
| SimpleBeanInfo | Это вспомогательный класс, упрощающий создание классов BeanInfo. |
| Statement | Объект Statement представляет собой простую инструкцию, в которой к целевому объекту применяется один метод с набором аргументов, как в "a.setFoo(b)". |
| Transient | Указывает, что атрибут с именем "transient" следует объявить с заданным value, когда Introspector создает классы PropertyDescriptor или EventSetDescriptor, связанные с аннотированным элементом кода. |
| VetoableChangeListener | Событие VetoableChange генерируется при изменении бином «ограниченного» свойства. |
| VetoableChangeListenerProxy | Класс, расширяющий EventListenerProxy специально для добавления VetoableChangeListener с «ограниченным» свойством. |
| VetoableChangeSupport | Это вспомогательный класс, который могут использовать бины, поддерживающие ограниченные свойства. |
| Visibility | В некоторых случаях бин может выполняться на серверах, где графический интерфейс недоступен. |
| XMLDecoder | Класс XMLDecoder используется для чтения XML-документов, созданных с помощью XMLEncoder, и применяется так же, как ObjectInputStream. |
| XMLEncoder | Класс XMLEncoder является альтернативой, дополняющей ObjectOutputStream, и может использоваться для создания текстового представления JavaBean так же, как ObjectOutputStream используется для создания двоичного представления объектов Serializable. |
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/beans/package-summary.html