我想在 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 进行初始化。另请注意,如果您试图确保该字段仅在初始化后可见,则可能需要将其设为 final
或 volatile
。
关于java - 将 Java lambda 的结果分配给字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46045997/