Spec-Zone.ru › OpenJDK 21

Класс DefaultPersistenceDelegate

java.lang.Object
java.beans.PersistenceDelegate
java.beans.DefaultPersistenceDelegate
public class DefaultPersistenceDelegate extends PersistenceDelegate
Конкретная реализация абстрактного класса PersistenceDelegate и используется по умолчанию для классов, о которых нет информации. Этот класс предоставляет, совместимую с версиями, основанную на публичном API, персистентность для классов, следующих соглашениям JavaBeans без каких-либо специфичных для класса настроек.

Основные предположения: класс имеет конструктор без параметров, и его состояние точно отражается соответствующими парами методов «setter» и «getter» в порядке, в котором они возвращаются Introspector. Помимо обеспечения безкодовой персистентности для JavaBeans, данный класс предоставляет удобный способ обеспечения персистентного хранения для классов, имеющих конструктор, который, хотя и не является конструктором без параметров, просто требует некоторых значений свойств в качестве аргументов.

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» в порядке их возврата Introspector.
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, если классы двух экземпляров равны.
Overrides:
mutatesTo в классе PersistenceDelegate
Параметры:
oldInstance - Экземпляр, подлежащий копированию.
newInstance - Экземпляр, подлежащий модификации.
Возвращает:
True, если эквивалентная копия newInstance может быть создана путём применения серии мутаций к oldInstance.
См. также:
  • DefaultPersistenceDelegate(String[])

instantiate

protected Expression instantiate(Object oldInstance, Encoder out)
Эта реализация по умолчанию метода instantiate возвращает выражение, содержащее предопределённое имя метода «new», которое обозначает вызов конструктора с аргументами, указанными в конструкторе DefaultPersistenceDelegate.
Specified by:
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» в порядке их возврата Introspector. Если описатель свойства определяет атрибут «transient» со значением, равным Boolean.TRUE, свойство игнорируется этой реализацией по умолчанию. Обратите внимание, что это использование слова «transient» совершенно независимо от модификатора поля, используемого ObjectOutputStream .

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

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

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

© 1993, 2023, 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/21/docs/api/java.desktop/java/beans/DefaultPersistenceDelegate.html

Spec-Zone.ru

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