首页javalambdaJava Stream - 如何使用有效的最终变量

Java Stream - 如何使用有效的最终变量

我们想知道如何使用有效的最终变量。
import java.util.function.IntUnaryOperator;

public class Main {
   public static void main(String[] args) {
      final Integer number1 = 20;
      Integer number2 = 10;

      MessagePrinter printer = new MessagePrinter() {
         @Override
         public void print() {
            // number1 has to be final
            System.out.println("number1 = " + number1);
         }
      };

      // watch here, we accessed number2 and it's not final inside a lambda
      incrementEffectivelyFinalVar(x -> x + number2);
      printer.print();
   }

   public static void incrementEffectivelyFinalVar(IntUnaryOperator operator) {
      System.out.println("operator.applyAsInt(1) = " + operator.applyAsInt(1));
   }
}
interface MessagePrinter {
  void print();
}