1.反射是什么:
反射是一种重要的技术,它允许程序在运行时动态地加载、查询和使用类、方法和属性,在运行时可以替换和调用类中的方法和属性。
2.反射的用处:
1.获取已装载类的成员变量信息;
2.获取已装载类的方法;
3.获取已装载类的构造方法信息。
3.类类:
根据Student.java获取类类的方式:
package com.xiaoxu; public class Student { private String sid; private String sname; public Integer age; static{ System.out.println("加载进jvm中!"); } public Student() { super(); System.out.println("调用无参构造方法创建了一个学生对象"); } public Student(String sid) { super(); this.sid = sid; System.out.println("调用带一个参数的构造方法创建了一个学生对象"); } public Student(String sid, String sname) { super(); this.sid = sid; this.sname = sname; System.out.println("调用带二个参数的构造方法创建了一个学生对象"); } @SuppressWarnings("unused") private Student(Integer age) { System.out.println("调用Student类私有的构造方法创建一个学生对象"); this.age = age; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public void hello() { System.out.println("你好!我是" + this.sname); } public void hello(String name) { System.out.println(name + "你好!我是" + this.sname); } @SuppressWarnings("unused") private Integer add(Integer a, Integer b) { return new Integer(a.intValue() + b.intValue()); } }
1.Class.forName()----这是通过内存地址的方式获取,应用在jdbc数据库链接中
2.类名.class 这个用于增删改
3.对象.getclass() 这个用于查询
案例及效果:
4.反射实例化:
1.getConstructor 调用公共的方法
2.getDeclaredConstructor 调用私有的方法
案列及效果:
5.反射动态方法的调用:
1.getMethod 调用公共的方法
2.getDeclaredMethod 调用私有的方法
案列及效果:
6.反射读写属性
1.getDeclaredField
2.getDeclaredFields
整体效果:
修改:
效果展示: