public static void main(String[] args) {
List extends Object> mylist = new ArrayList
The point of bounded wildcard types is their use in method signatures to increase API flexibility. If, for example, you implement a generic Stack, you could provide a method to push a number of elements to the stack like so:
public void pushAll(Iterable extends E> elements) {
for(E element : elements){
push(e);
}
}
Compared to a pushAll(Iterable signature without a wildcard, this has the advantage that it allows collections of subtypes of E to be passed to the method - normally that would not be allowed because an Iterable is, somewhat counterintuitively, not a subclass of Iterable.