黑马程序员技术交流社区
标题:
关于泛型的一个小问题
[打印本页]
作者:
ying
时间:
2013-1-16 22:08
标题:
关于泛型的一个小问题
本帖最后由 ying 于 2013-1-17 15:05 编辑
Class<?> x = null;
Class<Object> y = null;
x = y;
y = x;
为什么 x = y;都没有问题,
而 y = x; 都出错?
作者:
jonn
时间:
2013-1-16 22:21
Object 是 API 类库 跟类,是任何运行程序父类,
x=y 成立
x=Object.getClass
y=x 不成立
y=<?> jvm自动加载类,没有给它指定一个类赋值给y,实际上从?捕捉扩展的Object ,那么就是 一个不确定的类型,肯定会报错
作者:
ying
时间:
2013-1-16 22:34
Class<?> x = null;
Class<Object> y = null;
x = y; // 编译通过
y = x; //编译通不过
那么Object为所有类型的父类,而x类型虽然还没有确定,但一经确定他也肯定是Object子类啊!
也为Object是所有类的父类啊!让子类等于父类不正确吗?更具java的特性,多有子类的类型都是
父类的类型,子类的类型不就属于父类的类型吗?
作者:
王溢君
时间:
2013-1-16 22:36
x = y;这是把y的指向拿给x 吗?
作者:
张敬培
时间:
2013-1-17 00:42
Class<?> x = null;
Class<Object> y = null;
x=y;
y的泛型制定的是一个Object类型的数据,x指向的是任意类型的数据,因为任意类型数据的范围要大于Object所有y赋值给x能成功
y=x;
因为x是任意类型,所以你把x赋值给y,范围大的赋值给范围小的肯定会报错
作者:
ying
时间:
2013-1-17 08:22
张敬培 发表于 2013-1-17 00:42
Class x = null;
Class y = null;
x=y;
任意类型的,这个任意类型,若果指定了,你说它不是Object的子类吗?子类不是父类的类型吗?
作者:
张敬培
时间:
2013-1-17 12:21
在泛型类型的定义的时候,没有类的继承一说。
例如:
Collection<Object> collection = new ArrayList<Object>();//可以
Collection<Object> collection = new ArrayList();//可以
Collection<Object> collection = new ArrayList<String>();//编译出错,定义的时候可以装Object,但是你实际装的只是String,类型不对应
Collection<?> collection = new ArrayList<String>();//编译通过,因为?代表任意类型,就不会考虑后面的集合装的是什么类型了
作者:
ying
时间:
2013-1-17 15:05
嗯!问题解决啦!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2