Function implementing Generics
I am preparing for OCJP.I found a question in dump

    import java.util.*;
     public class G1 {
     public void takeList(List<? extends String> list) {
       // insert code here
     }
    }
**Which three code fragments, inserted independently at line 6, will compile? (Choose three.)**

     A. list.add("foo");
     B. Object o = list;
     C. String s = list.get(0);
     D. list = new ArrayList<String>();
     E. list = new ArrayList<Object>();
**Answer: B,C,D**

I have a query that if **List<? extends String** that means it matches with String class and all the subclass of String class.

Can anyone jutify the answer shown here
Function implementing Generics
===

I am preparing for OCJP.I found a question in dump

    import java.util.*;
     public class G1 {
     public void takeList(List<? extends String> list) {
       // insert code here
     }
    }
**Which three code fragments, inserted independently at line 6, will compile? (Choose three.)**

     A. list.add("foo");
     B. Object o = list;
     C. String s = list.get(0);
     D. list = new ArrayList<String>();
     E. list = new ArrayList<Object>();
**Answer: B,C,D**

I have a query that if **List<? extends String** that means it matches with String class and all the subclass of String class.

Can anyone jutify the answer shown here