简体   繁体   中英

Lambda suggestions in Eclipse like IntelliJ does

When in IntelliJ you enter some code like this :

Runnable cronTask = new Runnable() {
   @Override
   public void run() {
      // do something
   }
};

IntelliJ will automatically suggest that this will be better when using a lambda expression. And you have the option to do an automatic conversion to

Runnable cronTask = () -> {
   // do something
};

Is something like this possible in Eclipse ? Maybe with some kind of plugin ? I want Eclipse to give me warnings of where a lambda expression might be a better solution. And if possible also suggest the correct fix.

To the best of my knowledge, there is no way to make Eclipse show compiler warnings where lambda expressions are a better alternative. Nevertheless, there is a nice feature that takes care of the automatic conversion you requested.

Right-click on any project or Java file, and select Source -> Clean Up... In the window that appears, select Use custom profile , and click Configure... In the Code Style tab, enable Convert functional interface instances , and make sure Use lambda where possible is selected, as shown in the screenshot below:

Lambda 转换

Validate and run the clean up. This feature alongside the manual Quick assist suggested by Timothy Truckle in the comments will hopefully cover most of your needs.

Once you have "Use lambda when possible", you can now (Eclipse 2020.03) clean them up

A new clean up has been added that simplifies the lambda expression and the method reference syntax and is enabled only for Java 8 and higher.

The clean up:

  • removes parenthesis for a single untyped parameter,
  • return statement for a single expression and
  • brackets for a single statement.

It replaces a lambda expression by a creation or a method reference when possible.

To select the clean up, invoke Source > Clean Up... , use a custom profile, and on the Configure... dialog select Simplify lambda expression and method reference syntax on the Code Style tab.

For the given code:

清理前的 Lambda -- https://www.eclipse.org/eclipse/news/4.15/images/lambda-expression-enhancements-before.png

You get this after the clean up:

清理后的 Lambda -- https://www.eclipse.org/eclipse/news/4.15/images/lambda-expression-enhancements-after.png

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM