Unchecked conversion and super raw type
Zhong Yu
zhong.j.yu at gmail.com
Thu Apr 11 15:10:07 PDT 2013
Consider this example:
public class Test
{
static class A<T> {}
static class B extends A {}
void foo(A<String> a) {}
void foo(B b) {}
void test()
{
B b = new B();
foo(b); // error: reference to foo is ambiguous
}
}
For the method invocation expression `foo(b)`, method `foo(B)` is
applicable by subtyping. However is that also true for `foo(A<String>)`? By
the letter of the spec, we cannot find a Ci such that "B" is convertible to
Ci by unchecked conversion and Ci <: A<String>. So my understanding is that
`foo(A<String>)` is not applicable to `foo(b)` by subtyping, and the code
should compile since only one applicable method is found during "15.12.2.2.
Phase 1"
Zhong Yu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20130411/6ee780d7/attachment.html
More information about the compiler-dev
mailing list