将java lambda的结果赋给字段

to94eoyn  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(260)

这个问题在这里已经有了答案

如何使用lambda初始化字段(1个答案)
三年前关门了。
我想使用java中的lambda在创建时配置对象上的字段。这意味着我必须调用lambda内联,但是我没有看到在第一次将lambda分配给某个对象之前运行lambda的示例。具体来说,我想这样做:

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

这在java中可能吗?

luaexgnf

luaexgnf1#

必须首先将lambda转换为函数接口:

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

但是我不知道为什么你会选择这个,而不是声明一个简单的方法,或者从构造函数或初始化程序块初始化。另外,请注意,如果您试图确保字段仅在初始化后才可见,则可能需要使其可见 final 或者 volatile .

相关问题