Re: Compiler bug? "reference to addAll is ambiguous"
Steven Simpson wrote:
Oliver Wong wrote:
<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6356673>
It looks very similar to my issue, except that I think my situation is
much simpler than the part which goes "<L extends List<? super A>>";
instead, it's simply "List<? super ActualClassNotATypeVariable>"
Note the GenericCaptureAddingTest example further down, which I think is
more similar (although it's for Set, but I get the same problem when I
change it to List).
I think, that's the same bug.
Just for fun, I've slightly modified that example to reflect as close as
possible the Oliver's situation, here is the SSCCE:
import java.util.List;
public abstract class Test {
public interface ChangeRow {}
public void addData(List<? super ChangeRow> rows) {
rows.addAll(getSomeData());
}
protected abstract List<? extends ChangeRow> getSomeData();
}
On my machine (Windows XP, Intel 32bit), compiling the above example
produce the following output:
Test.java:8: reference to addAll is ambiguous, both method
addAll(java.util.Collection<? extends E>) in
java.util.Collection<capture#156 of ? super Test.ChangeRow> and method
addAll(java.util.Collection<? extends E>) in java.util.List<capture#156
of ? super Test.ChangeRow> match
rows.addAll(getSomeData());
^
1 error
This bug is reproducible using 1.6.0-beta2-b86, 1.6.0-b105, and
1.6.0_02-b06. Example compiles successfully with 1.5.0_04-b05,
1.5.0_06-b05, and 1.6.0-beta2-b73. (I have no other Java 5+ VMs
installed to test it)
piotr