/** * Credit: Ross Tate * https://www.facebook.com/ross.tate/posts/10102249566392775 */ class Unsound { static class Bound {} static class Bind { A bad(Bound bound, B b) {return b;} } public static U coerce(T t) { Bound bound = null; Bind bind = new Bind(); return bind.bad(bound, t); } public static void main(String[] args) { String foo = coerce(1); System.out.println(foo); } }