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

Улучшения API к Компонентному API JavaBeansTM в v1.4

Этот документ описывает изменения к пакету java.beans, которые были представлены в версии 1.4 Java 2 Платформы, Standard Edition:


Новый API для Долгосрочной Персистентности

Чтобы поддерживать долгосрочную персистентность, следующие классы были добавлены:

Класс Описание
Statement Объект, который представляет вызов метода, возможно с параметрами, на объект. Например: a.setFoo(b).
Expression Оператор, который возвращает результат. Например: a.getFoo().
XMLDecoder XML-документы чтений, которые создавались, используя XMLEncoder.
Encoder Персистентность использования делегирует, чтобы разломать граф объектов на серия Statements и Expressions, который может использоваться, чтобы воссоздать это.
XMLEncoder Encoder это производит операторы и выражения в кодировании XML.
PersistenceDelegate Абстрактный class, который определяет объекты, которые могут выразить состояние другого объекта, используя открытые методы class того объекта.
DefaultPersistenceDelegate Делегат персистентности использовал, по умолчанию, для бобов.

См. Компонентный API JavaBeans для ссылок туда, где можно найти больше информации о долгосрочной персистентности.

Другие Дополнения API

Следующие классы были также добавлены в v1.4:

Класс Описание
EventHandler Оказывает поддержку для того, чтобы динамически генерировать слушателей события, которые имеют маленькое место и могут быть сохранены автоматически схемой персистентности.
ExceptionListener Определяет слушателя, чтобы быть уведомленным, когда исключение было выдано, но тогда восстановилось с. Можно зарегистрировать слушателя исключения на XMLEncoder или XMLDecoder объект, который будет уведомлен, когда объект встречается с восстанавливаемой проблемой при записи или читая боб.
PropertyChangeListenerProxy Прокси, который реализует PropertyChangeListener и подачи, чтобы сгруппировать другого PropertyChangeListener (обработчик реального события) с определенным свойством; прокси передает события изменения свойства к обработчику реального события.
VetoableChangeListenerProxy Прокси, который реализует VetoableChangeListener и подачи, чтобы сгруппировать другого VetoableChangeListener (обработчик реального события) с определенным ограниченным свойством; прокси вперед vetoable события изменения свойства к обработчику реального события.

У следующих классов есть дополнительные методы:


Изменения к Introspector

Introspector class был повторно реализован, и его производительность улучшилась. Новая реализация вызвала следующие изменения в поведении introspector:

Сборка "мусора" и Пользовательские атрибуты

С v 1.4, a BeanInfo может быть собран "мусор", когда никакие прямые ссылки на это не существуют, и система низка на памяти. Это реализуется в Introspector переносясь BeanInfos в SoftReferences.

Возможность сборки "мусора" влияет, как Вы храните пользовательские атрибуты внутри BeanInfos. Если деталь BeanInfo собирается "мусор", тогда в следующий раз, когда Вы вызываете Introspector.getBeanInfo добраться BeanInfo, возвращенный объект не будет содержать пользовательских атрибутов.

Избегать этой проблемы, если Вы храните пользовательские атрибуты внутри a BeanInfo следует гарантировать что BeanInfo правильно инициализируется с теми атрибутами каждый раз, когда Вы получаете BeanInfo. Следующее является примером инициализации a BeanInfo class с пользовательским свойством в бобовом дескрипторе. Код был бы подобен для пользовательского атрибута в дескрипторе свойства, дескрипторе метода, или дескрипторе набора события.

BeanInfo beanInfo = getBeanInfo(SomeBean.class);
BeanDescriptor beanDescriptor = beanInfo.getBeanDescriptor();

/*
 * Before using the BeanInfo, check to see if our custom
 * property has been initialized.  (Even if we initialized
 * it before, if the BeanInfo has been garbage collected,
 * then we need to initialize it again.)  Since our custom
 * property's value could be null, we define another property
 * to tell us if the custom property is initialized.
 */
if (beanDescriptor.getValue("myProperty_init") == null) {
    beanDescriptor.setValue("myProperty", someValue);
    beanDescriptor.setValue("myProperty_init", Boolean.TRUE);
}

Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами