业务中碰到根据字段名称匹配执行函数的情况,网上找的解决办法都差不多,这篇代码清晰:文章链接 使用函数接口和枚举实现配置式编程(Java与Scala实现)
上述的文章用到了Function 这个类型的函数式接口,因为我业务中要用set方法,所以需要自定义函数式接口满足需求(复习一波函数式接口)
@FunctionalInterface
public interface MyFun<T,E> {
void setFiled(T t,E e);
}
public enum Config {
NAME("adasd",Stu::setName1);
private String fild;
private MyFun<Stu,String> method;
Config(final String fild, final MyFun<Stu,String> method) {
this.fild = fild;
this.method = method;
}
public String getFild() {
return this.fild;
}
public MyFun<Stu,String> getMethod() {
return this.method;
}
}
public static void main(String[] args) {
Stu stu = new Stu();
Config.NAME.getMethod().setFiled(stu,"as");
System.out.println(stu.getName1());
}