java - 通过函数设置字段

标签 java

我正在尝试制作一个通用方法,它将通过函数设置一个字段,如下所示:

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/

相关文章:

java - JPA持久化上下文什么时候结束?

java - 带有 RemoteViews 的 Android 通知 - 具有与 RemoteViews 布局关联的 Activity

java - 按钮的 ActionListener 和 ActionEvent 之间有什么区别?

java - 无法使用 Eclipse 将文件夹从项目导出到 jar

java - Tapestry 5 - 如何在 <t :radiogroup>? 上进行客户端 'required' 验证

java - XX :+HeapDumpOnOutOfMemoryError Max file size limit

BufferedImage 的 Java 抗锯齿

java - 将map传递给Jackon的valueToTree方法时将java.sql.Timestamp转换为StringNode

java - 根据用户输入选择子类?

java - 无法在 CentOS 7 上安装 JHipster