对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
1、首先是加载类
//方法1
Class clazz = Class.forName("com.reflect.Person");
//方法2
Class clazz1 =new Person().getClass();
//方法3
Class clazz2 =Person.class;
2、解剖类-(构造函数、方法、字段)
//加载类,获得类的字节码
Class clazz = Class.forName("com.reflect.Person");
//解剖类
Constructor c= clazz.getConstructor(null);
Person p=(Person) c.newInstance(null);
Constructor c1=clazz.getConstructor(String.class);//获取构造函数
Method m=clazz.getMethod("run", null);//获取方法
Field f=clazz.getField("name2");//获取字段
Person p1=(Person) c1.newInstance("nnnn");
Constructor c3= clazz.getDeclaredConstructor(String.class,int.class);//private--私有的获取方法
c3.setAccessible(true);//暴力反射--所以的私有构造函数,方法,字段,都需要暴力反射
Person p3=(Person) c3.newInstance("p",1);
下边jar包中有详细的说明
本文详细介绍了Java反射机制的基本概念及其实现方式。通过三种不同方法加载类并解析类的构造函数、方法和字段,展示了如何动态获取类信息及调用其方法。同时,还涉及了如何处理私有成员及使用暴力反射。
1496

被折叠的 条评论
为什么被折叠?



