| /* |
| * @test /nodynamiccopyright/ |
| * @bug 4897892 |
| * @summary cast to parameterized type is accepted although it should be rejected |
| * @author gafter |
| * |
| * @compile/ref=AmbiguousCast.out -XDrawDiagnostics -Xlint:unchecked AmbiguousCast.java |
| */ |
| |
| class Test { |
| |
| private static class GenericWrapper<Elem> { |
| private Elem theObject; |
| public GenericWrapper(Elem arg) { |
| theObject = arg; |
| } |
| public <T extends Elem> GenericWrapper (GenericWrapper<T> other) { |
| this.theObject = other.theObject; |
| } |
| public String toString() { |
| return theObject.toString(); |
| } |
| } |
| private static GenericWrapper<String> method (Object wrappedString) { |
| return (GenericWrapper<String>) wrappedString; |
| } |
| |
| public static void main(String[] args) { |
| System.out.println(method(new GenericWrapper<String>("abc"))); |
| System.out.println(method(new GenericWrapper<Exception>(new Exception()))); |
| } |
| } |