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类型的。 用的是父类的引用罢了。 多看看源码吧

JustWannaHugU
TA贡献452条经验 获得超796个赞
补充一下:GregorianCalendar 是 Calendar 的一个具体子类,instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

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是黄种人的时候要干嘛
}
添加回答
举报
0/150
提交
取消