- java.lang.Object
-
- java.beans.PersistenceDelegate
-
- java.beans.DefaultPersistenceDelegate
-
public class DefaultPersistenceDelegate extends PersistenceDelegate
TheDefaultPersistenceDelegate
is a concrete implementation of the abstractPersistenceDelegate
class and is the delegate used by default for classes about which no information is available. TheDefaultPersistenceDelegate
provides, version resilient, public API-based persistence for classes that follow the JavaBeans™ conventions without any class specific configuration.The key assumptions are that the class has a nullary constructor and that its state is accurately represented by matching pairs of "setter" and "getter" methods in the order they are returned by the Introspector. In addition to providing code-free persistence for JavaBeans, the
DefaultPersistenceDelegate
provides a convenient means to effect persistent storage for classes that have a constructor that, while not nullary, simply requires some property values as arguments.- Since:
- 1.4
- See Also:
DefaultPersistenceDelegate(String[])
,Introspector
-
-
Constructor Summary
Constructors Constructor and Description DefaultPersistenceDelegate()
Creates a persistence delegate for a class with a nullary constructor.DefaultPersistenceDelegate(String[] constructorPropertyNames)
Creates a default persistence delegate for a class with a constructor whose arguments are the values of the property names as specified byconstructorPropertyNames
.
-
Method Summary
Methods Modifier and Type Method and Description protected void
initialize(Class<?> type, Object oldInstance, Object newInstance, Encoder out)
This default implementation of theinitialize
method assumes all state held in objects of this type is exposed via the matching pairs of "setter" and "getter" methods in the order they are returned by the Introspector.protected Expression
instantiate(Object oldInstance, Encoder out)
This default implementation of theinstantiate
method returns an expression containing the predefined method name "new" which denotes a call to a constructor with the arguments as specified in theDefaultPersistenceDelegate
's constructor.protected boolean
mutatesTo(Object oldInstance, Object newInstance)
If the number of arguments in the specified constructor is non-zero and the class ofoldInstance
explicitly declares an "equals" method this method returns the value ofoldInstance.equals(newInstance)
.-
Methods inherited from class java.beans.PersistenceDelegate
writeObject
-
-
-
-
Constructor Detail
-
DefaultPersistenceDelegate
public DefaultPersistenceDelegate()
Creates a persistence delegate for a class with a nullary constructor.
-
DefaultPersistenceDelegate
public DefaultPersistenceDelegate(String[] constructorPropertyNames)
Creates a default persistence delegate for a class with a constructor whose arguments are the values of the property names as specified byconstructorPropertyNames
. The constructor arguments are created by evaluating the property names in the order they are supplied. To use this class to specify a single preferred constructor for use in the serialization of a particular type, we state the names of the properties that make up the constructor's arguments. For example, theFont
class which does not define a nullary constructor can be handled with the following persistence delegate:new DefaultPersistenceDelegate(new String[]{"name", "style", "size"});
- Parameters:
constructorPropertyNames
- The property names for the arguments of this constructor.- See Also:
instantiate(java.lang.Object, java.beans.Encoder)
-
-
Method Detail
-
mutatesTo
protected boolean mutatesTo(Object oldInstance, Object newInstance)
If the number of arguments in the specified constructor is non-zero and the class ofoldInstance
explicitly declares an "equals" method this method returns the value ofoldInstance.equals(newInstance)
. Otherwise, this method uses the superclass's definition which returns true if the classes of the two instances are equal.- Overrides:
mutatesTo
in classPersistenceDelegate
- Parameters:
oldInstance
- The instance to be copied.newInstance
- The instance that is to be modified.- Returns:
- True if an equivalent copy of
newInstance
may be created by applying a series of mutations tooldInstance
. - See Also:
DefaultPersistenceDelegate(String[])
-
instantiate
protected Expression instantiate(Object oldInstance, Encoder out)
This default implementation of theinstantiate
method returns an expression containing the predefined method name "new" which denotes a call to a constructor with the arguments as specified in theDefaultPersistenceDelegate
's constructor.- Specified by:
instantiate
in classPersistenceDelegate
- Parameters:
oldInstance
- The instance to be instantiated.out
- The code output stream.- Returns:
- An expression whose value is
oldInstance
. - Throws:
NullPointerException
- ifout
isnull
- See Also:
DefaultPersistenceDelegate(String[])
-
initialize
protected void initialize(Class<?> type, Object oldInstance, Object newInstance, Encoder out)
This default implementation of theinitialize
method assumes all state held in objects of this type is exposed via the matching pairs of "setter" and "getter" methods in the order they are returned by the Introspector. If a property descriptor defines a "transient" attribute with a value equal toBoolean.TRUE
the property is ignored by this default implementation. Note that this use of the word "transient" is quite independent of the field modifier that is used by theObjectOutputStream
.For each non-transient property, an expression is created in which the nullary "getter" method is applied to the
oldInstance
. The value of this expression is the value of the property in the instance that is being serialized. If the value of this expression in the cloned environmentmutatesTo
the target value, the new value is initialized to make it equivalent to the old value. In this case, because the property value has not changed there is no need to call the corresponding "setter" method and no statement is emitted. If not however, the expression for this value is replaced with another expression (normally a constructor) and the corresponding "setter" method is called to install the new property value in the object. This scheme removes default information from the output produced by streams using this delegate.In passing these statements to the output stream, where they will be executed, side effects are made to the
newInstance
. In most cases this allows the problem of properties whose values depend on each other to actually help the serialization process by making the number of statements that need to be written to the output smaller. In general, the problem of handling interdependent properties is reduced to that of finding an order for the properties in a class such that no property value depends on the value of a subsequent property.- Overrides:
initialize
in classPersistenceDelegate
- Parameters:
oldInstance
- The instance to be copied.newInstance
- The instance that is to be modified.out
- The stream to which any initialization statements should be written.- Throws:
NullPointerException
- ifout
isnull
- See Also:
Introspector.getBeanInfo(java.lang.Class<?>)
,PropertyDescriptor
-
-
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 11/06/2005 gemaakt, de laatste keer de 04/03/2020 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/java-api-rf-java/beans/DefaultPersistenceDelegate.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.
Referenties
Deze verwijzingen en links verwijzen naar documenten die geraadpleegd zijn tijdens het schrijven van deze pagina, of die aanvullende informatie kunnen geven, maar de auteurs van deze bronnen kunnen niet verantwoordelijk worden gehouden voor de inhoud van deze pagina.
De auteur Deze site is als enige verantwoordelijk voor de manier waarop de verschillende concepten, en de vrijheden die met de referentiewerken worden genomen, hier worden gepresenteerd. Vergeet niet dat u meerdere broninformatie moet doorgeven om het risico op fouten te verkleinen.