Package org.plumelib.util
Interface DeepCopyable<T>
- Type Parameters:
T
- the type of the subtype of DeepCopyable
public interface DeepCopyable<T>
An interface for types that implement the
deepCopy()
method.-
Method Summary
Modifier and TypeMethodDescriptiondeepCopy()
Returns a deep copy of this.static <T2 extends @Nullable DeepCopyable<T2>>
@PolyNull T2deepCopyOrNull
(@PolyNull T2 object) Returns the deep copy of a non-null argument, ornull
for anull
argument.
-
Method Details
-
deepCopy
T deepCopy()Returns a deep copy of this. A deep copy is equal to the original, but side effects to either object are not visible in the other. A deep copy may share immutable state with the original.The run-time class of the result is identical to the run-time class of this. The deep copy is equal to
this
(perequals()
if the object's class does not use reference equality asObject.equals()
does).- Returns:
- a deep copy of this
-
deepCopyOrNull
Returns the deep copy of a non-null argument, ornull
for anull
argument.- Type Parameters:
T2
- the type of the object- Parameters:
object
- object to copy- Returns:
- the deep copy of a non-null argument, or
null
for anull
argument
-