有个类A
public class A<E> {//代码略
}再写一个Test类 
public class Test {
   public static void main(String[] args){
          A<String> s1 = new A();
          A<Object> s2 = new A();          s2.push("Java");
          s2.push(2);
          s1.push("Sun");
        
          add(s1,s2);
}   public static <T> void add(A<T> s1, A<T> s2) {         while(! s1.isEmpty())
             s2.push(s1.pop());
}}
add方法将s1的字符串添加到s2中,但是add(s1,s2)这行会编译错误而如果把形参A<T> s2 换成 A<? super T>则正确,书上解释说是s1的类型是A<String> 而s2类型为A<Object>。  <? super T>表示类型T 或者T的子类型。
为什么说A<Object>是A<? super String> 的子类型