JDK 1.8 的一些新特性
1. 修改了JVM模型,用metaSpace代替了永久代
2.接口中可以进行default实现。
增加了对lambda表达式的支持,新增了函数式接口@FunctionalInterface
函数式接口是一个规范(除去重写Object类的方法,接口中只能有一个抽象方法),在接口上加@FunctionalInterface,接口如果为非函数式接口,
就会报编译错误。而函数式接口上不加此注解不会有任何问题。函数式接口可以用lambda表达式进行实现,
表达式中的内容即是对接口中那个唯一的抽象方法的实现。
增加了4种函数接口:Function(有入有出,类型不定),Predicate(返回值为boolean),Supplier(无入参),Consumer(无返回值)
3. 增加了时间处理类LocalDateTime 等,它是一个final类,解决了之前时间类Date,Calendar等中的线程安全和操作繁琐的问题。
LocalDateTime可以理解为一个带有时区信息的时间点,它可以通过Instant类来与Date进行互相转换。
LocalDateTime localDateTime=LocalDateTime.now()
Date date = Date.from(localDateTime.atZone( ZoneId.systemDefault()).toInstant());
LocalDateTime localDateTime = new Date().toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime()
增加了一些并发接口和实现,如CompletableFuture,StampedLock,为ConcurrentHashMap新增了对流的支持。
4. Collection 集合类接口增加了对Stream(来自数据源的元素队列,不承载数据,只提供处理方式)的支持,
修改了HashMap和ConcurrentHashMap的实现。