joor github地址
使用joor可以简化代码,可以捕捉到使用反射时无法抛出的异常
测试类
@Data
public class ABC {
private String A;
public String B;
public void soutA(){
System.out.println("test");
}
}
测试代码
import static org.joor.Reflect.*;
@Test
void contextLoads() throws Exception{
// 使用joor赋值
ABC abc1 = new ABC();
on(abc1).set("A","123").set("B","321");
System.out.println(abc1);// ABC(A=123, B=321)
// 使用joor执行方法
on(abc1).call("soutA");
// 使用原生反射赋值
Class<?> aClass = Class.forName("com.example.entity.ABC");
ABC instance = (ABC) aClass.newInstance();
Field a = aClass.getDeclaredField("A");
Field b = aClass.getDeclaredField("B");
a.setAccessible(true);
a.set(instance,"123");
b.set(instance,"321");
System.out.println(instance);
// 使用原生发射执行方法
Method soutA = aClass.getDeclaredMethod("soutA", null);
soutA.invoke(instance,null);
}