Jdk8 主要
-
Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
-
也就是匿名内部类的 ‘语法糖’ (简化匿名内部类的书写)
- lambda表达式的形式 : (函数式接口中唯一方法的参数) -> {方法的具体实现}
-
函数式编程
-
方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
-
特性说明:
1,函数式接口仅仅只有一个方法(非默认或静态方法),用于显示转换成ladbma表达式。 2, java.lang.Runnable接口,java.util.concurrent.Callable接口是两个最典型的函数式接口。 3.如果一个函数式接口添加一个普通方法,就变成了非函数式接口(一般定义的接口)。 4.Jdk8 规范里添加了注解@FunctionalInterface来限制函数式接口不能修改为普通的接口
-
supllier 生产型接口
suplier<T> T get();
-
consumer 消费 (使用) 型接口
-
consumer<T> void accept(T t) andThen
andThen方法的使用: 可以连接两个consumer接口
consumer<String> conn1; consumer<String> conn2; // 两个接口对象连接使用 也就是对str对象进行二次操作 conn1.andThen(conn2).accpet(String str)
-
-
默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
-
讲解接口的时候可以提及
例
package com.java8.defaultmethod; public interface Interface1 { void method1(String str); //a default method default void log(String str){ System.out.println("I1 logging::"+str); } }
-
-
新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
-
Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
stream:是一个接口 继承了BaseStream 定义整合了n多规范
-
public interface Stream<T> extends BaseStream<T, Stream<T>>
-
-
Date Time API − 加强对日期与时间的处理
-
Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
-
Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。
-
重复注解