我很清楚反射應該只能作爲最後的手段,即使您處於似乎您應該依賴的情況下,也可能意味着您的設計不好。這是一個非常強大的工具,只能極其謹慎地使用。在Java中使用Object.getClass()是不好的做法嗎?
我也知道,的Java存儲一些家政信息有關對象,所以理論上它應該是一個相對便宜的操作以確定動態類型的對象與Object.getClass()
(至少便宜相比,沒有這樣的語言管家數據,例如C++,其中RTTI需要昂貴的vtable查找)。
這是真的嗎? 難道認爲壞實踐中的Java 檢查一個objec一些基本的的噸一定使用getClass()
派生型?
'instanceof'對於派生自類SomeBaseClassObject''的類的實例返回'true',所以它不一樣。 – Martin
正確,但您會用它來檢查您關心的父級/子級別中的級別。如果你想驗證它是一個子對象,那麼instanceof就是這個。您可以根據需要縮小範圍。 – pczeus
正確,但可以使用'getClass()'來檢查一個實例是否是查找類型的_exactly_。 – Martin