diff options
Diffstat (limited to 'src/main/java/bjc/funcdata')
| -rw-r--r-- | src/main/java/bjc/funcdata/Freezable.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/bjc/funcdata/Freezable.java b/src/main/java/bjc/funcdata/Freezable.java index e83accb..8bb037c 100644 --- a/src/main/java/bjc/funcdata/Freezable.java +++ b/src/main/java/bjc/funcdata/Freezable.java @@ -12,7 +12,7 @@ package bjc.funcdata; * * @author Ben Culkin */ -public interface Freezable { +public interface Freezable<F extends Freezable<?>> { /** * Freezes the internal state of this object, making it immutable. * @@ -70,4 +70,15 @@ public interface Freezable { default boolean isThawed() { return !isFrozen(); } + + /** + * Clone this object in a thawed state. + * + * @return A thawed clone of this object + * + * @throws CloneNotSupportedException If the underlying object doesn't support cloning + */ + default F cloneAsThawed() throws CloneNotSupportedException { + throw new CloneNotSupportedException(); + } } |
