您的位置:首页 > 编程语言 > Java开发

Java反射机制

2017-11-05 19:22 281 查看
关于Class对象

每个类都有一个Class对象,存放在.class文件中

为了生成类对象,JVM将使用“类加载器”子系统

所有的类都是在第一次使用时动态加载到了JVM中

Java程序在开始执行时并非全部加载Class对象,而是在其需要时才加载

当需要Class对象时,类加载器首先查找这个对象是否已经加载,若没有加载则去.class文件中加载对应的Class对象。一旦Class对象被加载,则其将会用来创建所有的这个类的对象

创建Class对象的方法

Class clazz = null;
//1。通过forName方法加载
clazz = Class.forName("uestc.edu.reflection.Student");
//2。通过类.class加载
clazz = Student.class;
//3。通过对象的getClass方法加载
clazz = new Student().getClass();


Class对象的一些方法

//1.获取类名
System.out.println(clazz.getCanonicalName());//获取全类名
System.out.println(clazz.getSimpleName());//获取不含包的类名
//2.获取父类的Class对象
System.out.println(clazz.getSuperclass());
//3.创建类对象
Object object = clazz.newInstance();

//4.获取Field对象
Object object = clazz.newInstance();
Field field = clazz.getDeclaredField("age");//获取自身的属性getField是获取公有属性

field.setAccessible(true);//若属性是私有,需要通过此方法设置权限,method同理
field.setInt(object,12);//为属性赋值
int age = field.getInt(object);//获取属性值

//5.获取Method对象
Method method = clazz.getDeclaredMethod("setAge", int.class);//获得自身的方法getMethod是获取公有方法
method.invoke(object,20);//操作类的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jvm