将Java lambda的结果分配给字段

时间:2017-09-05 01:59:08

标签: java lambda

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

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

这在Java中是否可行?

1 个答案:

答案 0 :(得分:3)

首先必须将lambda转换为功能接口:

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

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