問: gerClass()
方法是用來作什麼的?html
答: 經過gerClass()
方法能夠獲得一個和這個類有關的java.lang.Class
對象。返回的Class
對象是一個被static synchronized
方法封裝的表明這個類的對象;例如,static sychronized void foo(){}
。這也是指向反射API。由於調用gerClass()
的對象的類是在內存中的,保證了類型安全。java
問: 還有其餘方法獲得Class
對象嗎?安全
答: 獲取Class
對象的方法有兩種。能夠使用類字面常量,它的名字和類型相同,後綴位.class;例如,Account.class
。另一種就是調用Class
的foeName()
方法。類字面常量更加簡潔,而且編譯器強制類型安全;若是找不到指定的類編譯就不會經過。經過forname()
能夠動態地經過指定包名載入任意類型地引用。可是,不能保證類型安全,可能會致使Runtime
異常。spa
問: 實現equals()
方法的時候,getClass()
和instanceof
哪個更好?code
答: 使用getClass()
仍是instanceof
的話題一直都是Java社區爭論的熱點,Angelika Langer的Secrets of equals – Part 1文章能夠幫助你作出選擇。關於正確覆蓋equals()
方法(例如保證對稱性)的討論,Lang的這篇文章能夠做爲一個很好的參考手冊。htm