| Author |
why l.add() method is not working in this context?
|
sandeep sree
Greenhorn
Joined: Feb 17, 2008
Posts: 9
|
|
class p1 { public static void main(String a[]) { List<? extends String> l=new ArrayList<String>(); l.add("abc"); } };
|
 |
Christophe Verré
Sheriff
Joined: Nov 24, 2005
Posts: 14685
|
|
"sandeep", Welcome to the ranch. You may not be aware of the ranch Naming Policy. Please read it carefully and change your name accordingly (you need to set both first and last names). Thank you.
|
[My Blog]
All roads lead to JavaRanch
|
 |
Christophe Verré
Sheriff
Joined: Nov 24, 2005
Posts: 14685
|
|
The parameter of add() is <? extends String> which means an unknown subtype of String is in there. String is not a great example. You should look at a simplier example like this : So, l is a List<? extends A>. But what can you really put in there ? In the doSomething method, you don't know what kind of list it really is. Could you call l.add(new C()) ? C extends A. But we declared the list as containing B objects. With this type of wildcards, you can get objects from a collection, but not add any.
|
 |
 |
|
|
subject: why l.add() method is not working in this context?
|
|
|