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
提交
取消