zoukankan      html  css  js  c++  java
  • 关于java8 Lambda表达式使用 以及变量的使用限制 方法引用

    一、Lambda表达式规则

    • 1、lambda表达式里只能引用被final 修饰的本地变量  ,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。
    • 2、局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)
    • 3、lambda表达式里不允许声明一个与局部变量同名的参数或者局部变量。
      
      
      package com.ljg.test;

      import java.util.ArrayList;
      import java.util.List;

      public class LambdaTest02 {
      public static void main(String[] args){
      List<String> lists = new ArrayList<>();
      lists.add("陈天");
      lists.add("龙云");
      int a = 10;
      //lambda表达式便利
      try {
      lists.forEach(l -> {
      String a = "霸道总裁";//规则第3条
      System.out.println("lambda里给 外部局部变量 自动加上了 final 修饰符" + a);//规则第2条,隐式标记为 final常量
      lists.add("宁晓晓");//快速失败,报运行时异常ConcurrentModificationException
      });
      } catch (Exception e) {
      e.printStackTrace();
      }finally {
      a++;//编译不通过,a局部变量已被lambda表达式隐式的编辑为final
      System.out.println("finally输出:" + a);
      }

      //常规for循环
      // for (int i = 0; i < lists.size(); i++) {
      // a++;
      // System.out.println("list元素:" + lists.get(i));
      // }
      }

      }
       
  • 相关阅读:
    商务通代码
    Ubuntu 创建快捷方式的方法
    Linux安装Nginx
    Linux安装jdk10
    Mycat实现Mysql数据库读写分离
    Mysql主从复制
    SpringBoot整合Redis集群
    Redis集群环境搭建
    SpringBoot整合redis哨兵主从服务
    redis 哨兵机制环境搭建
  • 原文地址:https://www.cnblogs.com/parrot/p/13704367.html
Copyright © 2011-2022 走看看