C is obvious as you can assign anything to a List<?> generic type
samir vasani wrote:
Anything which extends B can be assignable to List<? extends B>. Since class D is extending class B, List <D> can be assigned to List<? extends B>
Here you can assign any list that extends B to List<? extends A> as class B is extending class A.
If you feel the answer should be something else, please put your points here as to why you think, so that we can discuss.