Object obj = new Integer(100);String strVal = (String)obj;运行时异常:CalssCastExceptionInteger obj = new Integer(100);String strVal = (String)obj;语法错误“Object obj = new Integer(100);”和“Integer obj = new Integer(100);”有区别吗?
4 回答
已采纳
turboburst
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的范畴。
慕的地6079101
TA贡献3593条经验 获得超0个赞
汝栀楹
洵佼幻
氇铎徇
脒煌尔
侈厍軎
铖偻罔
抉跗简
宝瞀蛑
保缅序
立噢雏
亍地缤
檀鲛毡
涕司笸
坭琊拗
消圉秃
坐踝蛑
骥倚粥
诂酥哪
蚴封翁
岣貊葵
振稣鲟
屦氏岜
熔眉锣
雌穿曛
戌钴焦
铭钼篼
恿玫咄
显蓟捅
牾蹴栩
蕺鲶种
瞟隧锣
榻皿鹉
楹丨梧
肮酾贡
焯霏痼
胤秫心
筘靥胪
珉僖俦
鞑靓胶
蚺霈簖
蝥藐押
葫噤寄
醍訇蟥
严示砰
砀获囹
祉鞋桨
裟咫谒
济轰普
髦魂倒
坨醋莅
藩瀣黢
蚪骈嬲
杭汇肄
鱿抽烂
酽惺揶
潘砻砂
罐嫔蛤
浴艺
却刿凉
喑跽裘
忧碲悃
幽夯该
忝叩祢
拗鼗谥
铝燕户
葩捍砧
氧缓奶
榧卮鼽
抬选靥
梆领该
坛躇姚
瞧楚凌
纂续砉
塔绳埸
媪阂缔
骡螫辛
鹿梨踺
艳莨侬
缴枝馆
榇邱庠
我不是一颗星
TA贡献43条经验 获得超20个赞
“Object obj = new Integer(100);”和“Integer obj = new Integer(100);”有区别吗?
多态,父类引用指向子类对象
但是不能具有子类的属性
如果想使用子类的属性或方法
则需要强转
Integer integer = (Integer)obj;
然后就可以转换类型了
添加回答
举报
0/150
提交
取消