Spec-Zone.ru › OpenJDK 25

Класс DefaultPersistenceDelegate

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

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

Начиная с версии:
1.4
См. также:
  • DefaultPersistenceDelegate(String[])
  • Introspector

Краткое описание конструкторов

Конструктор Описание
DefaultPersistenceDelegate()
Создает делегат сохранения для класса с конструктором без аргументов.
DefaultPersistenceDelegate(String[] constructorPropertyNames)
Создает делегат сохранения по умолчанию для класса с конструктором, аргументами которого служат значения имен свойств, заданных в constructorPropertyNames.

Краткое описание методов

Модификатор и тип Метод Описание
protected void initialize(Class<?> type, Object oldInstance, Object newInstance, Encoder out)
В этой реализации метода initialize по умолчанию предполагается, что все состояние объектов данного типа предоставляется через соответствующие пары методов «сеттер» и «геттер» в порядке, в котором их возвращает Introspector.
protected Expression instantiate(Object oldInstance, Encoder out)
Эта реализация метода instantiate по умолчанию возвращает выражение, содержащее предопределенное имя метода "new", обозначающее вызов конструктора с аргументами, заданными в конструкторе DefaultPersistenceDelegate.
protected boolean mutatesTo(Object oldInstance, Object newInstance)
Если число аргументов в указанном конструкторе не равно нулю и класс oldInstance явно объявляет метод "equals", этот метод возвращает значение oldInstance.equals(newInstance).

Методы, объявленные в классе PersistenceDelegate

writeObject

Методы, объявленные в классе 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(Object, Encoder)

Подробное описание методов

mutatesTo

protected boolean mutatesTo(Object oldInstance, Object newInstance)
Если число аргументов в указанном конструкторе не равно нулю и класс oldInstance явно объявляет метод "equals", этот метод возвращает значение oldInstance.equals(newInstance). В противном случае используется определение суперкласса, которое возвращает true, если классы двух экземпляров совпадают.
Переопределяет:
mutatesTo в классе PersistenceDelegate
Параметры:
oldInstance — экземпляр, который необходимо скопировать.
newInstance — экземпляр, который необходимо изменить.
Возвращает:
Истина, если эквивалентную копию 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 по умолчанию предполагается, что все состояние объектов данного типа предоставляется через соответствующие пары методов «сеттер» и «геттер» в порядке, в котором их возвращает Introspector. Если дескриптор свойства определяет атрибут "transient" со значением Boolean.TRUE, это свойство игнорируется в данной реализации по умолчанию. Обратите внимание, что это употребление слова "transient" никак не связано с модификатором поля, который используется в ObjectOutputStream.

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

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

Переопределяет:
initialize в классе PersistenceDelegate
Параметры:
type — тип экземпляров
oldInstance — экземпляр, который необходимо скопировать.
newInstance — экземпляр, который необходимо изменить.
out — поток, в который следует записать операторы инициализации.
Выбрасывает:
NullPointerException — если out равно null
См. также:
  • Introspector.getBeanInfo(Class)
  • PropertyDescriptor

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания, предназначенные для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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/DefaultPersistenceDelegate.html

Spec-Zone.ru

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