title: Java stopped erroring on non-final variables in inner classes (java 8)
body: <p>Java 7 was saying "Cannot refer to the non-final local variable message defined in an enclosing scope" on following code:</p>
  
  <pre><code>public class Runner {   
      public static void main(String[] args) {
  
          String message = "Hello world";
  
          new Runnable() {
              @Override
              public void run() {
                  System.out.println(message);
              }
          }.run();
      }
  }
  </code></pre>
  
  <p>Java 8 does not.</p>
  
  <p>Suspect this is about adding functional programming features to Java.</p>
  
  <p>Does it process the code similarly?</p>