Класс DefaultPersistenceDelegate
public class DefaultPersistenceDelegate extends PersistenceDelegate
PersistenceDelegate и используется по умолчанию для классов, о которых нет информации. Этот класс предоставляет, совместимую с версиями, основанную на публичном API, персистентность для классов, следующих соглашениям JavaBeans без каких-либо специфичных для класса настроек. Основные предположения: класс имеет конструктор без параметров, и его состояние точно отражается соответствующими парами методов «setter» и «getter» в порядке, в котором они возвращаются Introspector. Помимо обеспечения безкодовой персистентности для JavaBeans, данный класс предоставляет удобный способ обеспечения персистентного хранения для классов, имеющих конструктор, который, хотя и не является конструктором без параметров, просто требует некоторых значений свойств в качестве аргументов.
- Since:
- 1.4
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DefaultPersistenceDelegate() |
Создает делегат персистентности для класса с конструктором без параметров. |
DefaultPersistenceDelegate |
Создаёт делегат персистентности по умолчанию для класса с конструктором, аргументы которого являются значениями имён свойств, указанными constructorPropertyNames. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
initialize |
Эта реализация по умолчанию метода initialize предполагает, что всё состояние, хранящееся в объектах данного типа, представлено соответствующими парами методов «setter» и «getter» в порядке их возврата Introspector. |
protected Expression |
instantiate |
Эта реализация по умолчанию метода instantiate возвращает выражение, содержащее предопределённое имя метода «new», которое обозначает вызов конструктора с аргументами, указанными в конструкторе DefaultPersistenceDelegate. |
protected boolean |
mutatesTo |
Если количество аргументов в указанном конструкторе не равно нулю, и класс oldInstance явно объявляет метод «equals», этот метод возвращает значение oldInstance.equals(newInstance). |
Методы, объявленные в классе java.beans.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, если классы двух экземпляров равны.- Overrides:
-
mutatesToв классеPersistenceDelegate - Параметры:
-
oldInstance- Экземпляр, подлежащий копированию. -
newInstance- Экземпляр, подлежащий модификации. - Возвращает:
- True, если эквивалентная копия
newInstanceможет быть создана путём применения серии мутаций кoldInstance. - См. также:
instantiate
protected Expression instantiate(Object oldInstance, Encoder out)
instantiate возвращает выражение, содержащее предопределённое имя метода «new», которое обозначает вызов конструктора с аргументами, указанными в конструкторе DefaultPersistenceDelegate.- Specified by:
-
instantiateв классеPersistenceDelegate - Параметры:
-
oldInstance- Экземпляр, подлежащий инициализации. -
out- Поток вывода кода. - Возвращает:
- Выражение, значение которого
oldInstance. - Исключение:
-
NullPointerException- еслиoutравенnullи это значение используется в методе - См. также:
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 - См. также:
© 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