summaryrefslogtreecommitdiff
path: root/src/main/java/bjc
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc')
-rw-r--r--src/main/java/bjc/functypes/ArrayChooser.java20
-rw-r--r--src/main/java/bjc/functypes/IntArrayChooser.java19
2 files changed, 39 insertions, 0 deletions
diff --git a/src/main/java/bjc/functypes/ArrayChooser.java b/src/main/java/bjc/functypes/ArrayChooser.java
new file mode 100644
index 0000000..3baa00c
--- /dev/null
+++ b/src/main/java/bjc/functypes/ArrayChooser.java
@@ -0,0 +1,20 @@
+package bjc.functypes;
+
+/**
+ * Function which picks a single element from an array of elements.
+ *
+ * @author Ben Culkin
+ *
+ * @param <ElementType> The type of element stored in the array.
+ */
+@FunctionalInterface
+public interface ArrayChooser<ElementType> {
+ /**
+ * Select a single element from an array of elements.
+ *
+ * @param elements The elements to pick from.
+ *
+ * @return The selected element.
+ */
+ public ElementType choose(@SuppressWarnings("unchecked") ElementType... elements);
+}
diff --git a/src/main/java/bjc/functypes/IntArrayChooser.java b/src/main/java/bjc/functypes/IntArrayChooser.java
new file mode 100644
index 0000000..416487e
--- /dev/null
+++ b/src/main/java/bjc/functypes/IntArrayChooser.java
@@ -0,0 +1,19 @@
+package bjc.functypes;
+
+/**
+ * Int-specialized variant of ArrayChooser.
+ *
+ * @author Ben Culkin
+ *
+ */
+@FunctionalInterface
+public interface IntArrayChooser {
+ /**
+ * Choose a single int from an array of ints.
+ *
+ * @param ints The array of ints to choose.
+ *
+ * @return The chosen int.
+ */
+ public int choose(int... ints);
+}