1) list < ? super String> list = new ArrayList <String>> ();
The above syntax says that the list is declared of type list and can take only objects of type String or super class of String. and it has been initialized as an ArrayList which will accept only Strings in the list. What is the problem in it ???
2) howcome a protected is less restrictive than default.
Protected is less restrictive than defualt cause the visibility of the object or method marked protected is visible outside the package to all the classes who extend that class . Where as default is limited to visibility just with in that package irrespective of whether the class is being extended by some other class out side package it won't b visible.