<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="font-family:arial,helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)"><div><br><span style="font-size:12pt">It's not a bug, it's how the capture works, a List<List<? super T>> is a List where each List can have a different type, but here you want a List of List with each list with the same type,</span><br></div><div>it can be approximated by<br></div><div><br></div><div>private static <T> void listMethod(List<? extends List<? super T>> list) {<br>}</div></div></blockquote><div><br></div><div>I think you misunderstand Rémi. I know very well what `List<List<? super T>>` is. And the code snippet I shared is logically correct in the sense that an infinitely intelligent type inferer could figure out that it is correct. In fact, if - in the above code - I write `Arrays.<List<? super T>>asList(args)` instead of `Arrays.asList(args)`, then it compiles fine. My question is why do I have to explicitly specify the type arguments, why can't it be inferred.<br></div><div><br></div><div>Btw. If you change the `listMethod` argument to `List<? extends List<? super T>> list` it won't compile either.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="font-family:arial,helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)"><div><br></div><div>but please, do not use an array of parametrized types List<? super T>[] in an API, because creating those are usually unsafe.</div></div></blockquote><div><br></div><div>That is besides the point, I wrote this code to be as simple as possible. If you need to know, then in the original code I came across this was using varargs in a safe way (and to avoid further red herrings it was not done with List).</div></div></div>