summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/funcdata/Freezable.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/funcdata/Freezable.java')
-rw-r--r--src/main/java/bjc/funcdata/Freezable.java13
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();
+ }
}