java8 新特性

java8 新特性

  1. Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

    语法:
    (parameters) -> expression
    或
    (parameters) ->{ statements; }

     

  2. 方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

    List<Long> contractNos = entryDOList.stream().map(EntryDO::getContractNo)
        .collect(Collectors.toList());
  3. 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。

    public interface SuperMapper<T> extends BaseMapper<T> {
    
        /**
         * 根据 entity 条件,查询全部记录,返回第一条记录
         * @param wrapper
         * @return
         */
        default T selectFirst(@Param("ew") Wrapper<T> wrapper) {
            List<T> list = this.selectList(wrapper);
            return CollectionUtils.isNotEmpty(list) ? list.get(0) : null;
        }
    }
  4. 新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。

  5. Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。

  6. Date Time API − 加强对日期与时间的处理。

    LocalDate/LocalTime 和 LocalDateTime 类可以在处理时区不是必须的情况
    // 获取当前时间日期区时
    ZonedDateTime date1 = ZonedDateTime.parse("2015-12-03T10:15:30+05:30[Asia/Shanghai]");
    

     

  7. Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常

    import java.util.Optional;
     
    public class Java8Tester {
       public static void main(String args[]){
       
          Java8Tester java8Tester = new Java8Tester();
          Integer value1 = null;
          Integer value2 = new Integer(10);
            
          // Optional.ofNullable - 允许传递为 null 参数
          Optional<Integer> a = Optional.ofNullable(value1);
            
          // Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
          Optional<Integer> b = Optional.of(value2);
          System.out.println(java8Tester.sum(a,b));
       }
        
       public Integer sum(Optional<Integer> a, Optional<Integer> b){
        
          // Optional.isPresent - 判断值是否存在
            
          System.out.println("第一个参数值存在: " + a.isPresent());
          System.out.println("第二个参数值存在: " + b.isPresent());
            
          // Optional.orElse - 如果值存在,返回它,否则返回默认值
          Integer value1 = a.orElse(new Integer(0));
            
          //Optional.get - 获取值,值需要存在
          Integer value2 = b.get();
          return value1 + value2;
       }
    }
    
    输出结果
    第一个参数值存在: false
    第二个参数值存在: true
    10

     

  8. Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。

函数式接口

  1. 有且仅有一个抽象方法
  2. 可以包含默认的方法
  3. 可以有静态方法
  4. java8及以后一般用lambda实现
  5. java8之前一般用匿名类实现如下
new Comparable<SaveChargeParam>() {
     @Override
     public int compareTo(SaveChargeParam o) {
         return 0;
     }
};      

stream和parallelStream

stream和parallelStream就是一种流的处理方式,前者是单管,后者是多管道,在性能上用传统的for循环和stream以及parallelStream对list进行遍历,传统方式跟单管道stream的处理效率相差无几,多管道parallelStream的处理效率最高。

接口不继承Object类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值