为了账号安全,请及时绑定邮箱和手机立即绑定

Java中instanceof运算符的问题?

Java中instanceof运算符的问题?

小农的奋斗 2016-09-10 16:56:20
Calendar calendar = Calendar.getInstance(); System.out.println("calendar is an instance of GregorianCalendar : " + (calendar instanceof GregorianCalendar));为什么结果是"true"呢?搜索了几个小时也没搞明白。
查看完整描述

4 回答

已采纳
?
摩诃迦叶

TA贡献146条经验 获得超54个赞

进去看源码啊。。  你是认为Calendar.getInstance();拿到的是Calendar类型的,所以以为应该返回false吧?

其实他返回的就是一个GregorianCalendar类型的。  用的是父类的引用罢了。  多看看源码吧

查看完整回答
1 反对 回复 2016-09-10
  • 小农的奋斗
    小农的奋斗
    你好,非常感谢你的回答。之前看了源代码,可惜没看仔细。确实像你说的,父类引用指向了子类对象。
?
JustWannaHugU

TA贡献452条经验 获得超796个赞

补充一下:GregorianCalendar 是 Calendar 的一个具体子类,instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

查看完整回答
1 反对 回复 2016-09-10
?
dky

TA贡献93条经验 获得超26个赞

,instanceof 判断该对象的具体类型是否是你猜测的类型,是一种猜测语法,例如,你看到一个蒙面侠jack,你说他是黑人,黄种人,白种人?猜对了就和true,否则false,

  人类  Person, 黑人BlackPerson  ,黄种人YellowPerson,白人WhitePerson,都extends Person,

你可以这么猜

if(jack instanceof BlackPerson){

当jack是黑人的时候要干嘛

}else if(ack instanceof YellowPerson){

当jack是黄种人的时候要干嘛

}

查看完整回答
反对 回复 2016-09-10
  • 4 回答
  • 1 关注
  • 1754 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信