diff --git a/ax-java/src/main/java/com/g2forge/alexandria/java/type/IDynamicType.java b/ax-java/src/main/java/com/g2forge/alexandria/java/type/IDynamicType.java index fe1ada4e..a88d7c31 100644 --- a/ax-java/src/main/java/com/g2forge/alexandria/java/type/IDynamicType.java +++ b/ax-java/src/main/java/com/g2forge/alexandria/java/type/IDynamicType.java @@ -1,5 +1,6 @@ package com.g2forge.alexandria.java.type; +import java.util.Optional; import java.util.stream.Stream; import com.g2forge.alexandria.annotations.note.Note; @@ -14,6 +15,11 @@ public default Stream castIfInstance(Object value) { return Stream.of(cast(value)); } + public default Optional castIfInstanceOptional(Object value) { + if (!isInstance(value)) return Optional.empty(); + return Optional.of(cast(value)); + } + @Note(type = NoteType.TODO, value = "All implementations of this method need to be implemented in a generic-safe manner") public default boolean isAssignableFrom(IDynamicType type) { throw new NotYetImplementedError();