Spec-Zone.ru › OpenJDK 8

Класс DefaultPersistenceDelegate

  • java.lang.Object
    • java.beans.PersistenceDelegate
      • java.beans.DefaultPersistenceDelegate

public class DefaultPersistenceDelegate
extends PersistenceDelegate

Этот DefaultPersistenceDelegate — конкретная реализация абстрактного класса PersistenceDelegate и является по умолчанию делегатом для классов, о которых нет доступной информации. Данный DefaultPersistenceDelegate обеспечивает устойчивое к версиям сохранение с использованием публичного API для классов, соответствующих соглашениям JavaBeans™ без каких-либо специфичных настроек для классов.

Ключевыми предположениями являются наличие нульарного конструктора и то, что состояние класса точно отображается соответствующими парами методов «setter» и «getter» в порядке их возврата интроспекцией. Помимо бесшокового сохранения для JavaBeans, этот DefaultPersistenceDelegate предоставляет удобный способ для сохранения классов, у которых конструктор, хотя и не нульарный, просто требует некоторых значений свойств в качестве аргументов.

Since:
1.4
См. также:
DefaultPersistenceDelegate(String[]), Introspector

Конструкторы

Конструктор и описание
DefaultPersistenceDelegate()

Создаёт делегат сохранения для класса с нульарным конструктором.

DefaultPersistenceDelegate(String[] constructorPropertyNames)

Создаёт делегат сохранения по умолчанию для класса с конструктором, аргументами которого являются значения имён свойств, указанных в constructorPropertyNames.

Методы

Модификатор и тип Метод и описание
protected void initialize(Class<?> type, Object oldInstance, Object newInstance, Encoder out)

Эта реализация метода initialize по умолчанию предполагает, что всё состояние, хранящееся в объектах данного типа, представлено через соответствующие пары методов «setter» и «getter» в порядке, в котором они возвращаются интроспектором.

protected Expression instantiate(Object oldInstance, Encoder out)

Эта реализация метода instantiate по умолчанию возвращает выражение, содержащее предопределённое имя метода «new», которое обозначает вызов конструктора с аргументами, указанными в конструкторе DefaultPersistenceDelegate.

protected boolean mutatesTo(Object oldInstance, Object newInstance)

Если количество аргументов в указанном конструкторе не равно нулю, и класс oldInstance явно объявляет метод «equals», этот метод возвращает значение oldInstance.equals(newInstance).

Методы, унаследованные от класса java.beans.PersistenceDelegate

writeObject

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

DefaultPersistenceDelegate

public DefaultPersistenceDelegate()

Создаёт делегат сохранения для класса с нульарным конструктором.

См. также:
DefaultPersistenceDelegate(java.lang.String[])

DefaultPersistenceDelegate

public DefaultPersistenceDelegate(String[] constructorPropertyNames)

Создаёт делегат сохранения по умолчанию для класса с конструктором, аргументами которого являются значения имён свойств, указанных в constructorPropertyNames. Аргументы конструктора создаются путём вычисления имён свойств в порядке их предоставления. Для использования этого класса для указания одного предпочтительного конструктора для сериализации определённого типа, указываются имена свойств, составляющие аргументы конструктора. Например, класс Font , который не определяет нульарный конструктор, может быть обработан следующим делегатом сохранения:

new DefaultPersistenceDelegate(new String[]{"name", "style", "size"});

Параметры:
constructorPropertyNames - Имена свойств для аргументов этого конструктора.
См. также:
instantiate(java.lang.Object, java.beans.Encoder)

Методы

mutatesTo

protected boolean mutatesTo(Object oldInstance,
                            Object newInstance)

Если количество аргументов в указанном конструкторе не равно нулю, и класс oldInstance явно объявляет метод «equals», этот метод возвращает значение oldInstance.equals(newInstance). В противном случае, этот метод использует определение суперкласса, которое возвращает true, если классы двух экземпляров равны.

Переопределяет:
mutatesTo в классе PersistenceDelegate
Параметры:
oldInstance - Экземпляр, который необходимо скопировать.
newInstance - Экземпляр, который необходимо изменить.
Возвращает:
True, если эквивалентная копия newInstance может быть создана путём применения ряда мутаций к oldInstance.
См. также:
DefaultPersistenceDelegate(String[])

instantiate

protected Expression instantiate(Object oldInstance,
                                 Encoder out)

Эта реализация метода instantiate по умолчанию возвращает выражение, содержащее предопределённое имя метода «new», которое обозначает вызов конструктора с аргументами, указанными в конструкторе DefaultPersistenceDelegate.

Определено в:
instantiate в классе PersistenceDelegate
Параметры:
oldInstance - Экземпляр, подлежащий созданию.
out - Поток вывода кода.
Возвращает:
Выражение, значение которого равно oldInstance.
Исключения:
NullPointerException - если out имеет значение null и это значение используется в методе
См. также:
DefaultPersistenceDelegate(String[])

initialize

protected void initialize(Class<?> type,
                          Object oldInstance,
                          Object newInstance,
                          Encoder out)

Эта реализация метода initialize по умолчанию предполагает, что всё состояние, хранящееся в объектах данного типа, представлено через соответствующие пары методов «setter» и «getter» в порядке, в котором они возвращаются интроспектором. Если описание свойства определяет атрибут «transient» со значением, равным Boolean.TRUE, свойство игнорируется этой реализацией по умолчанию. Обратите внимание, что это использование слова «transient» совершенно независимо от модификатора поля, используемого в ObjectOutputStream.

Для каждого не-transient свойства создаётся выражение, в котором применяемый нульарный метод «getter» к oldInstance. Значение этого выражения — значение свойства в экземпляре, который сериализуется. Если значение этого выражения в клонированной среде mutatesTo целевое значение, новое значение инициализируется, чтобы сделать его эквивалентным старому значению. В этом случае, так как значение свойства не изменилось, не нужно вызывать соответствующий метод «setter», и не генерируется ни одной инструкции. В противном случае, выражение для этого значения заменяется другим выражением (обычно конструктором), и вызывается соответствующий метод «setter» для установки нового значения свойства в объект. Данная схема удаляет из выходных данных, создаваемых потоками, использующими этот делегат, информацию по умолчанию.

При передаче этих инструкций в выходной поток, где они будут выполняться, производятся побочные эффекты в newInstance. В большинстве случаев это позволяет решить проблему свойств, значения которых зависят друг от друга, фактически помогая процессу сериализации, уменьшая количество инструкций, которые нужно записать в выходной поток. В общем случае, проблема обработки взаимозависимых свойств сводится к определению порядка свойств в классе таким образом, чтобы ни одно значение свойства не зависело от последующего свойства.

Переопределяет:
initialize в классе PersistenceDelegate
Параметры:
type - тип экземпляров
oldInstance - Экземпляр, который необходимо скопировать.
newInstance - Экземпляр, который необходимо изменить.
out - Поток, в который должны быть записаны любые инструкции инициализации.
Исключения:
NullPointerException - если out имеет значение null
См. также:
Introspector.getBeanInfo(java.lang.Class<?>), PropertyDescriptor

© 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.

Spec-Zone.ru

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