我正在尝试制作一个通用方法,它将通过函数设置一个字段,如下所示:
public static <T> void setFieldValue(T model, Function<T,String> field){
String name = "some name";
//What to do here as well
field.apply(model);
}
假设我有一个来自名为 Person 的类的对象,它有一个名称字段,我想通过此方法使用 lambda 表达式设置对象名称。我该怎么做?
Person person = new Person();
setFieldValue(person, p-> //What to do here?);
如果不可能,推荐的方法是什么?
澄清
字段的新值将在 setFieldValue
中决定,我已经编辑了我的代码
最佳答案
试试这个。
public static <T> void set(T model, Consumer<T> consumer){
consumor.accept(model);
}
然后你可以设置名称如下:
Person p = new Person();
set(p, p2 -> p2.setName("test"));
编辑:用户更改了问题
试用 BiConsumer:https://docs.oracle.com/javase/8/docs/api/java/util/function/BiConsumer.html
关于java - 通过函数设置字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41486846/