// Unsound only in Java 8, Java 9+ already gives an error | |
// @skip-test no need to test for the javac error. | |
public class Figure4 { | |
static class Constrain<A, B extends A> {} | |
static <A, B extends A> A upcast(Constrain<A, B> constrain, B b) { | |
return b; | |
} | |
static <T, U> U coerce(T t) { | |
Constrain<U, ? super T> constrain = null; | |
// :: error: method upcast in class Figure4 cannot be applied to given types; | |
return upcast(constrain, t); | |
} | |
public static void main(String[] args) { | |
String zero = coerce(0); | |
} | |
} |