在运行期间加载类对象的信息(动态编译)
在运行期间动态加载某一个类
Emp.class获得类的字节码文件,返回Class类
在reflection中有Filed和Method两个类,分别获得属性和方法信息
package lesson29;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class TestReflect {
public static void main(String[] args) throws InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException {
//普通创建对象过程:编译期间加载类的信息 (静态编译)
Emp emp=new Emp();
System.out.println("对象"+emp+",属性"+emp.getEname());
//反射:在运行期间加载类对象的信息(动态编译)
Emp emp2=Emp.class.newInstance();
System.out.println("反射对象"+emp2+",属性"+emp2.getEname());
//获取class文件
Class cls=Emp.class;
System.out.println(cls);
Field f =cls.getDeclaredField("ename");
System.out.println(f.getName());
System.out.println(f.getType().getName());
Method[] m=cls.getDeclaredMethods();
for(Method mm:m){
System.out.println(mm);
}
}
}