zoukankan      html  css  js  c++  java
  • Stream()——报错使用final变量解决办法

    问题:

      在使用Stream()流进行操作变量的时候,会不时碰到:variable used in lambda expression should be final or effectively final,这是因为在Java 8 之前,匿名类中如果要访问局部变量的话,那个局部变量必须显式的声明为final。

    解决办法:

      (小白一个,勿喷)声明一个final变量进行重新赋值再进行流操作。

      String changeIdList = jsonObject.getString("changeIdList");
      // 局部变量
      List<Student> changeStudents = null;
      if (!changeIdList.equals("[]")){
        List<Long> longs = JSONObject.parseArray(changeIdList, Long.class);
        Student student = new Student();
        student.setDeptIds(longs);
        changeStudents = StudentService.selectStudentList(student);
      }
      // 重新赋值
      final List<Student> changeStudentList = changeStudents;
      List<Student> collect3 = changeStudentList == null ? collect2 : collect2.stream().filter(o ->
        !(changeStudentList.stream().map(Student::getSid).collect(Collectors.toList()).contains(o.getSid()))
      ).collect(Collectors.toList());
    

      

  • 相关阅读:
    第八次作业
    第七次作业2
    jsp第十一次作业
    jsp第十次作业
    jsp第九次作业
    jsp第八次作业
    jsp第七次作业
    jsp第六次作业
    软件测试第二次作业
    jsp第五次作业
  • 原文地址:https://www.cnblogs.com/lucky-jun/p/15093400.html
Copyright © 2011-2022 走看看