cglib动态代理
Model{
String name;
String age;
}
通过cglib动态代理 非接口的代理 获取model的field的值 判断值不能为null 或者不能为空字符串
MyCglibInterceptor extends MethodInterceptor{
String methodName;
@Overrde
public Object intercept(Object obj,Method method,Object[] args,MethodProxy mp){
System.out.print("xxx")
if(method.getname().startwith("get")){
methodname=method.getname()
}
return null
...
}
public Object getInstance(final Class<?> c){
final Enhancer en=new Enchancer()
en.setsuperclass(c)
en.setcallback(this)
return en.create()
}
}
Class main{
Class<?> c;
MyCglibInterceptor my=new MyCglibInterceptor()
T model =(T)my.getinstance(c)
Function<T,Object> fun=m->m.getName()
fun.apply(model)//cglib执行
my.getMethodName();
...
}