covariance

If a generic interface has only methods that return objects of type T, but don’t consume objects of type T, then assignment from a variable of Type\<B> to a variable of Type\<A> can make sense. This is called the covariance. Examples are: Iterable\<T>, Iterator\<T>, Supplier\<T>