public static void printBuddies(Pair<?extends Employee>p)
{
  Employee first =p.getFirst();
  Employee second=p.getSecond();
  System.out.println(first.getName()+"and"+second.getName()+"are budddies.");
}
对(Pair<?extends Employee>p)我不理解 。还有那个P.getFirst()要我们构造吗???
见笑了,请指教,谢谢……

解决方案 »

  1.   

    ?extends Employee 表示Pair容器内所存储的对象必须是 继承类Employee 或者是实现接口Employee的至于p.getFirst() 这个方法就是Pair类负责提供实现的,如果不是你自己写的pair类,你自然不用去关心它是怎么实现的
      

  2.   

    赞一楼
    <?extends Employee>表示pair中储存的是Employee任何它的子类
    依照上面的代码P.getFirst()不需要创建。
      

  3.   

    <?extends Employee> 说白了 表示一个 范围 
      

  4.   

    import java.util.ArrayList;
    import java.util.List;class Test7A{

    }
    class B extends Test7A{

    }public class Test7 { public static void main(String[] args) {
    List<Test7A> list=new ArrayList<Test7A>();
    list.add(new Test7A());
    list.add(new B());

    //List<Test7A> list2=new ArrayList<B>(); 报错
    List<? extends Test7A> list2=new ArrayList<B>();
    //谁能从 理论上来解释一下吗?
    // list2.add(new Test7A());报错 
    // list2.add(new B());报错

    Class<Test7A> classTest7A1=Test7A.class;
    // Class<Test7A> classTest7A2=B.class;报错
    Class<? extends Test7A> classTest7A3=B.class;
    }
    }
      

  5.   

    全被1楼说了,,,
    这么用就是避免运行时类型转换出现的问题
    不做限定,p.getFirst()等就得做强制类型转换,即可能出现异常