集合泛型通配符的一个小疑点,请问一下各位大侠

集合泛型通配符的一个小问题,请教一下各位大侠
集合泛型通配符的一个小疑点,请问一下各位大侠

为什么A 不能选啊? 
------解决方案--------------------
List<? extends String> list
你要理解这个形参的意思,是说你不加泛型,list里面可以存放任意类型的元素,但是一旦加上泛型作为类型限制,list就只能存放某种类型的数据。
这里list中存放继承String类的某一个子类,而继承String类的子类又不确定,你怎么就能决定list中add什么类型的数据呢。

就像一个人有三个孩子,你想给二儿子100块钱,现在你都不知道谁是二儿子,就知道他有三个儿子,你怎么给。

你肯定郁闷,老是觉得既然不能放字符串,D怎么就对了呢,这么给你说吧,你声明类型的时候是否可以用接口代替实现类,要是你很容易理解这个,那这个是同样道理,真不理解的话,你可以在list = new ArrayList<String>();后面继续写,list.add("xxoo");你会发现同样报错,以为这个泛型只是声明