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