问: 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