Object类是所有类的父类,也就是根类。
那么一个接口能继承另一个接口,那接口的根接口是什么?还是接口就没有根接口这个概念
这是你上课时将泛型时的代码GenericTest<? super List> ge2 = null;
ge2 = new GenericTest<Object>();难道Object是List的父类,也就是说Object是接口的父类?
那么一个接口能继承另一个接口,那接口的根接口是什么?还是接口就没有根接口这个概念
这是你上课时将泛型时的代码GenericTest<? super List> ge2 = null;
ge2 = new GenericTest<Object>();难道Object是List的父类,也就是说Object是接口的父类?
GenericTest<? super List> ge2 = null;
ge2 = new GenericTest<Object>();GenericTest指定了泛型下限是List,也就是说参数类型是实现了List接口的对象类型(由于List必须通过子类实例化,所以至少是ArrayList,LinkedList之类)或者是其父类。所以在new的时候传一个父类是符合这个泛型要求的。
public class Test {
public static void main(String[] args) {
HashSet<? super List> set = null;
set = new HashSet<LinkedList>();
}}
GenericTest<? super List> ge2 = null;
ge2 = new GenericTest<Object>();泛型里面规定了接受的是List的父接口或者实现了父接口的类吧,怎么下面能传个Object对象呢?我就是想不通,讨论下。我哪错了,请指正
泛型里面规定了接受的是List的父接口或者实现了父接口的类吧这句话错了。我进行了下面的实验。
下面的代码是错误的。
import java.util.*;
public class Test {
public static void main(String[] args) {
HashSet<? super B> set = null;
set = new HashSet<C>();
}}
interface A{
}
class C implements A {
}
interface B extends A{
}
所以,我猜测。对于Object这个类。他应该是进行了特殊的处理。
你只要知道,Object类做特殊处理了就行了。然后知道 上下线的问题。
就OK了。
jvm规范中
super_class; //0 或指向 constant_poll 中的有效索引值 , 对于 interface 必须为非 0 interface的super_class必须为非0,而它又确实没有super_class那么怎么办呢?就把它指向Objectso接口可以用object来代替就是这个原因。java中接口是没有根接口这一说法的,也没有继承Object。