JAVA反射小实例
实体类:
package dto;
import java.util.Date;
import java.text.SimpleDateFormat;
public class Student {
private String name = null;
private int age;
private String addr = null;
private Double slary;
private Date bronth;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public String toString(){
return "姓名: "+name+"\n年龄: "+age+"\n地址: "+addr+"\n薪水: "+slary+"\n出生日期: "+ sdf.format(bronth);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public Double getSlary() {
return slary;
}
public void setSlary(Double slary) {
this.slary = slary;
}
public Date getBronth() {
return bronth;
}
public void setBronth(Date bronth) {
this.bronth = bronth;
}
}
测试类:
import java.util.Date;
import java.text.SimpleDateFormat;
import java.lang.reflect.Constructor;
public class test {
public static void main(String[] args) throws Exception {
//获取类的 Class 对象实例
Class<?> clz = Class.forName("dto.Student");
//根据 Class 对象实例获取 Constructor 对象
Constructor<?> constructor = clz.getConstructor();
//使用 Constructor 对象的 newInstance 方法获取反射类对象
Object object = constructor.newInstance();
//获取方法的 Method对象 并且 利用invoke方法调用方法
clz.getMethod("setName", String.class).invoke(object, "果酱");
clz.getMethod("setAge", int.class).invoke(object, 23);
clz.getMethod("setAddr", String.class).invoke(object, "深圳");
clz.getMethod("setSlary", Double.class).invoke(object, 1000.01);
clz.getMethod("setBronth", Date.class).invoke(object, new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse("2020/07/12 10:11:12"));
System.out.println(object.toString());
}
}
更多详细内容参考文章:
大白话说Java反射:入门、使用、原理