title: Why implement cucumber stepdef with lambda expression is a good practice?
body: <p>As we know, with the new Cucumber-Java8 API, we can write our step definitions with lambda expressions. 
  Example code from github-cucumber:</p>
  
  <pre><code>package foo;
  
  import cucumber.api.java8.En;
  
  public class TestLambdaStepdefs implements En {
  
      //Lambda-steps inside Constructors
      public TestLambdaStepdefs() {
          Given("I have (\\d+) cukes in my belly", (Integer cukes) -&gt; {
              System.out.format("Cukes: %n\n", cukes);
          });
  
      Then("I have a some step definition", () -&gt; {
               throw new Exception();
          }); 
  
      Given("testlambda", () -&gt; {
           System.out.println("Inside Given");
      });
  
      When("^the search phrase \"([^\"]*)\" is entered$", (String phrase) -&gt; {
          System.out.println("Inside When");
      });
  
      Then("^results for \"([^\"]*)\" are shown$", (String phrase) -&gt; {
          System.out.println("Inside Then");
      });
      }
  </code></pre>
  
  <p>Can anyone help me understand what are the advantages of using lambda expression?
  And why the lambda should write in the construction?</p>
  
  <p>Thank you in advance for any input.</p>