Lets start with this:
ArrayList> myList = new ArrayList>();
This is creating an ArrayList whose elements are ArrayLists.
Now suppose we could assign that to
List> myList2 = myList.
Now, we should be able to do this:
myList2.add(new LinkedList());
But that means we have added a LinkedList to a list whose elements are supposed to be ArrayLists. Ooops!!!
In reality, the assignment of myList to myList2 is not legal ... and that ensures that it is not possible to add the wrong kind of List to the ArrayList> object. (No Peter, it is not just pedantry :-) )