diff options
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java b/BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java index f969960..f5d553c 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java +++ b/BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java @@ -3,61 +3,70 @@ package bjc.utils.data; import java.util.function.Function; /** - * Holds a single value of a specific type. - * This is used for indirect references to data, and more specifically - * for accessing non-final variables from a lambda. - * AKA the identity monad + * Holds a single value of a specific type. This is used for indirect + * references to data, and more specifically for accessing non-final + * variables from a lambda. AKA the identity monad + * * @author ben * - * @param <T> The type of the data being held + * @param <T> + * The type of the data being held */ public class GenHolder<T> { /** * The state this holder is responsible for. */ public T held; - + /** * Creates a new empty holder, with its state set to null */ public GenHolder() { held = null; } - + /** - * Creates a new holder, with its state initialized to the provided value + * Creates a new holder, with its state initialized to the provided + * value * - * @param held The state to initialize this holder to. + * @param held + * The state to initialize this holder to. */ public GenHolder(T hld) { held = hld; } - + + /** + * Return the result of applying the given transformation to the held + * value Doesn't change the held value + * + * @param f + * The transformation to apply + * @return A holder with the transformed value + */ + public <NewT> GenHolder<NewT> map(Function<T, NewT> f) { + return new GenHolder<NewT>(f.apply(held)); + } + /** - * Apply the given transformation to the held value. - * Returns the holder for allowing chaining of transforms - * @param f The transform to apply to the value + * Apply the given transformation to the held value. Returns the holder + * for allowing chaining of transforms + * + * @param f + * The transform to apply to the value * @return The holder */ public GenHolder<T> transform(Function<T, T> f) { held = f.apply(held); - + return this; } - - /** - * Return the result of applying the given transformation to the held value - * Doesn't change the held value - * @param f The transformation to apply - * @return A holder with the transformed value - */ - public <NewT> GenHolder<NewT> map(Function<T, NewT> f) { - return new GenHolder<NewT>(f.apply(held)); - } - + /** * Returns a raw mapped value, not contained in a GenHolder - * @param f The function to use for mapping the value + * + * @param f + * The function to use for mapping the value * @return The mapped value outside of a GenHolder */ public <E> E unwrap(Function<T, E> f) { |
