summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/funcdata/Freezable.java
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2022-09-24 12:35:09 -0400
committerBen Culkin <scorpress@gmail.com>2022-09-24 12:35:09 -0400
commitf8643f98c9a091cd9b56fc9468197ae58df0364b (patch)
treed112df4257c6284050d12c83ee39f1ea2be335aa /src/main/java/bjc/funcdata/Freezable.java
parenta7ab5364c4fc372d70ef5df910d38feec6be3adb (diff)
Implement basic Petri nets
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();
+ }
}