Interesting problem. I think that what’s going on is this. When you have two elements like you show, the return type from asList
is most specific type of all the arguments, which in your first example is List<Reference>
. This is assignment-compatible with List<? extends Reference>
. When you have a single argument, the return type is the specific type of the argument, which is not assignment-compatible because generics are not covariant.