static class A extends B{} //子子类
static class B extends C{} //子类
static class Example<T>{}
public static void main(String[] args) {
Example<? extends A> testAA = new Example<A>();
Example<? extends A> testAB = new Example<B>();//报错
Example<? extends A> testAC = new Example<C>();//报错
Example<? extends B> testBA = new Example<A>();
Example<? extends B> testBC = new Example<C>();//报错
Example<? extends C> testCA = new Example<A>();
Example<? extends C> testCB = new Example<B>();
Example<? super A> testAA = new Example<A>();
Example<? super A> testAB = new Example<B>();
Example<? super A> testAC = new Example<C>();
Example<? super B> testBA = new Example<A>();//报错
Example<? super B> testBC = new Example<C>();
Example<? super C> testCA = new Example<A>();//报错
Example<? super C> testCB = new Example<B>();//报错