在学习corejava中看到书上有这样一段话class Interval<T extends Serializable&Comparable>
原始类型用Serializable替换T,而编译器在必要时要向Comparable插入强转.为了提高效率,应该将标签接口放在边界列表的末尾.请问将标签接口放在边界列表的末尾有什么好处呢?

解决方案 »

  1.   

    这说明只要是 Serializable&Comparable下的子类都行,不是子类的话,就会有异常
      

  2.   

    用于限制泛型能够使用的类型范围:public class Test2 {
    public static void main(String[] args) {
    // 以下三行可以通过编译
    C c1=new C();
    C<A> ca=new C<A>();
    C<B> cb=new C<B>();
    // 以下内容无法通过编译
    //C<Integer> ci=new C<Integer>();
    //C<Object> Co=new C<Object>();
    }
    }class A {
    }class B extends A {
    }class C <T extends A > {
    }
      

  3.   

    再来个详细点的例子吧:public class Test2 {
    public static void main(String[] args) {
    // 以下几行可以通过编译(注掉的2行会出警告)
    C c1=new C();
    C<A> ca=new C<A>();
    C<B> cb=new C<B>();
    //c1.setObj(new B());
    //c1.setObj(new A());
    ca.setObj(new B());
    ca.setObj(new A());
    cb.setObj(new B());

    // 以下内容无法通过编译
    //C<Integer> ci=new C<Integer>();
    //C<Object> Co=new C<Object>();
    //c1.setObj(new Object());
    //ca.setObj(new Object());
    //cb.setObj(new A());
    //cb.setObj(new Integer(12));
    }
    }class A {
    }class B extends A {
    }class C <T extends A > {
    private T obj; public void setObj(T ojb) {
    this.obj=obj;
    }
    }
      

  4.   

     Serializable&Comparable下的子类都行,不是子类的话,就会有异常
      

  5.   

    LS几位说的我都可以理解..问题的重点是在最后一句
    将标签接口(Serializable)放在边界列表的末尾有什么好处呢?