猿问

Java中instanceof运算符的问题?

Calendar calendar = Calendar.getInstance();
		System.out.println("calendar is an instance of GregorianCalendar : " + (calendar instanceof GregorianCalendar));

为什么结果是"true"呢?搜索了几个小时也没搞明白。

小农的奋斗
浏览 1755回答 4
4回答

摩诃迦叶

进去看源码啊。。  你是认为Calendar.getInstance();拿到的是Calendar类型的,所以以为应该返回false吧?其实他返回的就是一个GregorianCalendar类型的。  用的是父类的引用罢了。  多看看源码吧

JustWannaHugU

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

dky

,instanceof 判断该对象的具体类型是否是你猜测的类型,是一种猜测语法,例如,你看到一个蒙面侠jack,你说他是黑人,黄种人,白种人?猜对了就和true,否则false,  人类  Person, 黑人BlackPerson  ,黄种人YellowPerson,白人WhitePerson,都extends Person,你可以这么猜if(jack instanceof BlackPerson){当jack是黑人的时候要干嘛}else if(ack instanceof YellowPerson){当jack是黄种人的时候要干嘛}
随时随地看视频慕课网APP

相关分类

Java
我要回答