使用IntelliJ IDEA在代码中用等效的代码替换lambda表达式

7

我可以使用IntelliJ IDEA重构替换lambda表达式为等效表达式吗?谢谢。

public class StateOwner {
    public void addStateListener(StateChangeListener listener) { ... }
}

..
StateOwner stateOwner = new StateOwner();

stateOwner.addStateListener(
    (oldState, newState) -> System.out.println("State changed")
);

我能否让IntelliJ IDEA用新的表达式替换lambda表达式部分?

stateOwner.addStateListener(new StateChangeListener() {

    public void onStateChange(State oldState, State newState) {
        System.out.println("State changed")
    }
});

3
当你将鼠标悬停在lambda箭头上时,IntelliJ会将其作为一个选项提供,但我不理解这个问题的意思。 - OneCricketeer
1
看这里,你需要 IntelliJ 2017.1https://www.jetbrains.com/help/idea/2017.1/migrating-to-java-8.html#d178614e264 - Bojan Petkovic
2个回答

16

这取决于你的热键设置。但如果你使用默认设置,你可以尝试在lambda窄化或lambda参数上引导光标,然后按alt+Enter,然后选择“用匿名类替换lambda”。


Mac 上的 Option + Enter。 - M. Justin

2

它提供了将您的代码转换为lambda函数的方式,与此类似。请确保您使用的是较新版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接