class Test<A,B> { | |
public static <P,Q> Test<P,Q> left(P p) { return null; } | |
public static <P,Q> Test<P,Q> right(Q q) { return null; } | |
public <C> C either(Function<A, C> leftFn, Function<B, C> rightFn){ return null; } | |
public Test<B,A> swap() { | |
return either(Test::<B,A>right, Test::<B,A>left); | |
} | |
} | |
interface Function<T, R> { | |
R fun(T t); | |
} |