本文首发于 http://www.YoungZY.com/
Java中,如何自定义一个函数,将POJO对象的Getter/Setter作为参数传入呢?
真诚是必杀技?
NO!源码才是技术博客的必杀技。
直接看函数定义
public static <T, R> void getterAsParam(T t, Function<T, R> getter) {
String format = "get value: %s";
System.out.println(String.format(format, getter.apply(t)));
}
public static <T, V> void setterAsParam(T t, V value, BiConsumer<T, V> setter) {
setter.accept(t, value);
}
接下来就是测试
public static void main(String[] args) {
Person person = new Person("ZhangSan", DateTimes.newDate(2000, 1, 1));
// Output:
// get value: ZhangSan
// get value: Sat Jan 01 00:00:00 CST 2000
getterAsParam(person, Person::getName);
getterAsParam(person, Person::getBirthday);
setterAsParam(person, "LiSi", Person::setName);
setterAsParam(person, DateTimes.newDate(2024, 1, 1), Person::setBirthday);
// Output:
// LiSi, Mon Jan 01 00:00:00 CST 2024
System.out.println(person.getName() + ", " + person.getBirthday());
}
完整代码见 GitHub | youngzhu
加入讨论