Java反射机制概述

静态 VS 动态语言

  • 静态语言:Java、C、C++
  sout("1+2");  //结果就是1+2
  • 动态语言:C#、JavaScript、PHP、python
  function a(){
    var x = "var b=1; var c=2; alert(b+c)";
    eval(x); 
}
  • java可以利用反射机制获得类似动态语言的特性

反射(Reflection)

  • 反射机制允许程序在执行期间借助反射API取得任何类的内部信息,能直接操作内部属性及方法。加载完类之后,堆内存中就产生一个Class类型的对象,该对象包含了类的结构信息。该对象就像一面镜子,透过这个镜子可以看到类的结构,所以,称之为 反射。

    Java反射机制_反射机制

    Class c = Class.forName("类名");

  • 功能:获取泛型信息、运行时处理注解、生成动态代理

理解class类并获取class实例

Java反射机制_反射机制_02

类的加载与ClassLoader

Java反射机制_c++_03

Java反射机制_反射机制_04

Java反射机制_反射机制_05

运行时创建类的对象

Java反射机制_python_06

获取运行时类的结构

Java反射机制_java_07

调用运行时类的结构

Java反射机制_c++_08
Java反射机制_python_09