重要的事情说三遍:
反射并没有什么神奇之处!反射并没有什么神奇之处!反射并没有什么神奇之处!
- 当通过反射与一个未知类型的对象打交道时,JVM只是简单地检查这个对象,看它属于哪个特定的类(和RTTI一样)。在用它做其他事情之前必须先加载那个类的class对象。
- 那个类的class文件要么存在于本地,要么在网络上。
仅此而已。
反射和RTTI的区别就是何时获得和打开class文件。
- RTTI在编译时打开和检查class文件。(换句话说,我们以普通的方式调用对象的方法)
- 反射在运行时打开和检查class文件。