contravariance

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