JAVA反射
1.定义
反射: 框架设计的灵魂
框架:半成品软件。可以在框架的基础上进行软件开发,简化编码
反射:将类的做成对象封装成其他对象,这就是反射机制;
2.反射应用及使用场合
1. 获取Class类名
通过Class.forName( )
Class.forName( ); 通常用于配置文件中
通过:类名.class
类名.class:多用于参数传递
Class cl2 =Person.class;
通过实例对象获得Class
对象.getClass():用于对象获取字节码文字对象
Person p = new Person();
Class cl3 = p.getClass();
2.获取成员变量
1.Field[] filelds = personclass.getFields();
获取public 类型的所有成员变量
2.Field field = personclass.getField("a");
获取public 类型的指定成员变量
3.Field[] fields = personclass.getDeclaredFields();
可以获取所有成员变量,修饰符对其无影响
4.Field name = personclass.getDeclaredField("name");
可以获得指定成员变量,修饰符对其无影响
注意:name.setAccessible(true);
暴力反射:成员变量,方法,构造方法不限权限;
设置/获得成员变量方法
步骤一:创建对象
Class personclass = Person.class;
步骤二:创建成员变量
Field a = personclass.getField(“a”);
步骤三:创建实例
Person p = new Person();
步骤四:设置成员变量
a.set(p,“拼多多”)
步骤五:获得成员变量
Object o = a.get§;
步骤六:打印
System.out.println(o);
3.获取构造函数
步骤一:获取Person类
Class personClass = Person.class;
步骤二:获取构造函数,构造函数参数一定要 一 一 对 应
Constructor constructor =personClass.getConstructor(String.class, String.class);
步骤三:构造函数赋值,参数一一对应
Object person = constructor.newInstance(“张三”,“23”);
构造函数赋值,空参或初始化
Object o = personClass.newInstance();
步骤四:打印
System.out.println(o);
4.获取类的方法
1.无参方法执行
Method eat_method = personclass.getMethod("eat");
eat_method.invoke(p);
2.有参方法执行
Method eat_method2 = personclass.getMethod("eat",String.class);
eat_method2.invoke(p, "苹果");
3.打印所有方法
Method[] method = personclass.getMethods();
for(Method m : method) {
System.out.println(m);
}
4.method.getName获得方法名称
- 获取方法步骤:
步骤一:获得Person类型
Class personclass = Person.class;
步骤二:获取实体类
Person person = new Person( );
步骤三:执行方法
1)无参方法执行
Method eat_method = personclass.getMethod(“eat”);
String m = eat_method.invoke§;
2)有参方法执行
Method eat_method = personclass.getMethod(“eat”,String.class);
String m = eat_method.invoke(p,“苹果”);
步骤四:打印
System.out.println(m)