RT:
某些业务想动态取 Java 类的对象方法,有多种方式,我这里分享一种SharedMethod扩展aop方法。
上 石马:
public class TemplteFn {
/**
* 转调Aop.get加载字符串名称的类或接口关联的Class对象
* @param name 指定字符串名称的类或接口关联的Class对象
* @return Aop.get返回的对象
*/
public Object aop(String name){
try {
return Aop.get(Class.forName(name));
} catch (ClassNotFoundException e) {
throw new RuntimeException("找不到这个类:" + name);
}
}
}public void configEngine(Engine me) {
me.addSharedMethod(new TemplateFn());
...使用:
#(aop("带包名的类名称").xxx())测试:
public class TplKit {
public String getName(){
return "myName";
}
public static void main(String[] args) {
String s = "#(aop('com.yunfinal.TplKit').name) " +
"-- #(aop('com.yunfinal.TplKit').getName())";
Engine use = Engine.use();
use.addSharedMethod(new TemplateFn());
Template template = use.getTemplateByString(s);
String str = template.renderToString(Kv.create());
System.out.println(str);
}
}结果:

如果想方法也是动态的,可以参考另一篇分享:https://jfinal.com/share/2552
非常好用~
有参考价值就点个赞呗~