4 回答
TA贡献26条经验 获得超15个赞
有区别,Object obj = new Integer(100); 中,对象obj的类型是Object, 这是位于顶层的类,是很宽泛概念的类,翻译过来就是,对象,由于所有类都是对象,所以是个很宽泛的概念。而Integer obj = new Integer(100);对象obj的类型是Integer,这就是说,obj的类型比较具体了。你的那个异常原因是:obj的类型是Object,它不能转换为String
顺便说一下,在使用new定义一个类的实例的时候,从右到左服从is a 原则,就是,右边的类型是否属于左边的范畴,如果属于,可以这么定义,否则是错误的,比如Object obj = new Integer(100);从语法上来说是对的,因为Integer是属于Object的,但是如果反过来,Integer obj = new Object();这就是错的了,因为Object并不是Integer的范畴。
TA贡献3593条经验 获得超1个赞
TA贡献43条经验 获得超20个赞
“Object obj = new Integer(100);”和“Integer obj = new Integer(100);”有区别吗?
多态,父类引用指向子类对象
但是不能具有子类的属性
如果想使用子类的属性或方法
则需要强转
Integer integer = (Integer)obj;
然后就可以转换类型了
添加回答
举报
