java - 将 Java lambda 的结果分配给字段

标签 java lambda

我想在 Java 中使用 lambda 在创建时配置对象上的字段。这意味着我必须内联调用 lambda,但我没有看到在首次将 lambda 分配给某些对象之前运行 lambda 的示例。具体来说,我想做这样的事情:

private JTextField tfInput = () -> { JTextField tf = JTextField(""); tf.setEditable(false); return tf; }();

这在 Java 中可能吗?

最佳答案

您必须首先将 lambda 转换为函数式接口(interface):

private JTextField tfInput = (Supplier<JTextField>)(() -> {
    JTextField tf = new JTextField("");
    tf.setEditable(false);
    return tf;
}).get();

但我不确定为什么您选择这样做,而不是声明一个简单的方法,或者从构造函数或初始化 block 进行初始化。另请注意,如果您试图确保该字段仅在初始化后可见,则可能需要将其设为 finalvolatile

关于java - 将 Java lambda 的结果分配给字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46045997/

相关文章:

c++ - 将函数指针实现替换为 std::function 以在 PlayFab SDK 中使用 lambda

Java 套接字已关闭 - 发布 SOAP 请求时

c# - 从列表中查找存在于另一个列表中的项目

java - 将 lambda 与 JdbcTemplate 查询方法一起使用显示模棱两可的错误

java - 如何将 Web 方面和工件添加到 IntelliJ Idea 的 gradle 模块中

c++ - 解压缩参数的类型

python - 为什么奇怪的列表理解行为有副作用?

java - 删除作业调度程序

java - Apache Commons Math 的标准偏差

java - 如何使用Java处理Excel工作表中的空值