Класс DefaultPersistenceDelegate
public class DefaultPersistenceDelegate extends PersistenceDelegate
DefaultPersistenceDelegate — это конкретная реализация абстрактного класса PersistenceDelegate; по умолчанию этот делегат используется для классов, о которых нет сведений. DefaultPersistenceDelegate обеспечивает устойчивое к изменениям версий сохранение на основе открытого API для классов, следующих соглашениям JavaBeans, без какой-либо специфической конфигурации класса. Основные предположения состоят в том, что у класса есть конструктор без аргументов и его состояние точно представлено соответствующими парами методов «сеттер» и «геттер» в порядке, в котором их возвращает Introspector. Помимо обеспечения сохранения JavaBeans без необходимости писать код, DefaultPersistenceDelegate предоставляет удобный способ обеспечить сохранение классов, конструктор которых, хотя и не является безаргументным, требует лишь нескольких значений свойств в качестве аргументов.
- Начиная с версии:
- 1.4
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DefaultPersistenceDelegate() |
Создает делегат сохранения для класса с конструктором без аргументов. |
DefaultPersistenceDelegate |
Создает делегат сохранения по умолчанию для класса с конструктором, аргументами которого служат значения имен свойств, заданных в constructorPropertyNames. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
initialize |
В этой реализации метода initialize по умолчанию предполагается, что все состояние объектов данного типа предоставляется через соответствующие пары методов «сеттер» и «геттер» в порядке, в котором их возвращает Introspector. |
protected Expression |
instantiate |
Эта реализация метода instantiate по умолчанию возвращает выражение, содержащее предопределенное имя метода "new", обозначающее вызов конструктора с аргументами, заданными в конструкторе DefaultPersistenceDelegate. |
protected boolean |
mutatesTo |
Если число аргументов в указанном конструкторе не равно нулю и класс oldInstance явно объявляет метод "equals", этот метод возвращает значение oldInstance.equals(newInstance). |
Методы, объявленные в классе PersistenceDelegate
writeObject
Подробное описание конструкторов
DefaultPersistenceDelegate
public DefaultPersistenceDelegate()
- См. также:
DefaultPersistenceDelegate
public DefaultPersistenceDelegate(String[] constructorPropertyNames)
constructorPropertyNames. Аргументы конструктора создаются путем вычисления имен свойств в заданном порядке. Чтобы использовать этот класс для указания единственного предпочтительного конструктора при сериализации определенного типа, задаются имена свойств, составляющих аргументы конструктора. Например, для класса Font, у которого нет конструктора без аргументов, можно использовать следующий делегат сохранения:
new DefaultPersistenceDelegate(new String[]{"name", "style", "size"});
- Параметры:
-
constructorPropertyNames— имена свойств, задающие аргументы этого конструктора. - См. также:
Подробное описание методов
mutatesTo
protected boolean mutatesTo(Object oldInstance, Object newInstance)
oldInstance явно объявляет метод "equals", этот метод возвращает значение oldInstance.equals(newInstance). В противном случае используется определение суперкласса, которое возвращает true, если классы двух экземпляров совпадают.- Переопределяет:
-
mutatesToв классеPersistenceDelegate - Параметры:
-
oldInstance— экземпляр, который необходимо скопировать. -
newInstance— экземпляр, который необходимо изменить. - Возвращает:
- Истина, если эквивалентную копию
newInstanceможно создать, применив последовательность изменений кoldInstance. - См. также:
instantiate
protected Expression instantiate(Object oldInstance, Encoder out)
instantiate по умолчанию возвращает выражение, содержащее предопределенное имя метода "new", обозначающее вызов конструктора с аргументами, заданными в конструкторе DefaultPersistenceDelegate.- Определено в:
-
instantiateв классеPersistenceDelegate - Параметры:
-
oldInstance— экземпляр, который необходимо создать. -
out— поток вывода кода. - Возвращает:
- Выражение, значение которого равно
oldInstance. - Выбрасывает:
-
NullPointerException— еслиoutравноnullи это значение используется в методе - См. также:
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 - См. также:
© 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