A monad is any instance of that interface[5]. That is all it is.
Example 3. The List monad
new Monad<List>() { // List :: * -> * (kind checks) public <A> List<A> pure(A a) { return List.single(a); } public <A, B> List<B> bind(Transformer<A, List<B>> t, List<A> a) { List<B> r = List.empty(); for(e : a) r.addAll(t.transform(e)); return r; } };