Here is the problem that I have been being tried to find the solution.
We have two class definitions. One of two extends other one.
class T{}
You can create a List directly, this can allow all subtypes of T into the list. This is actually little difficult to understand. when you declare it as
List extends T> list = ...
It means that it can allow any unknown subtypes of T into the list. But, from that declaration we cannot ensure which is the exact sub-type of T. so, we can only add null into it