静态默认方法与上述类似,表示接口类中可以添加以static修饰的实现方法。如下所示:
public interface Test{ String test1(); defualt String test2() { return "test2"; } static String test3() { return "test3"; } } 函数式接口:有且只有一个抽象方法的接口,为函数式接口。functional interface 注意如果使用@FunctionalInterface主键在该接口类上,则该接口只能有一个抽象方法,否则会报错(特殊情况,还可以覆盖Object类中的public方法),且所有方法必须是public的。 String toString(); //覆盖Object 的 toString()方法 int hashCode(); //覆盖Object 的 hashCode()方法 boolean equals(Object obj); //覆盖Object 的 equals()方法 方法引用,如下 ClassName::methodName; //方法引用 ClassName::new; //引用构造方法 ArrayName[]::new; //数组构造方法引用 Stream API,java通过Stream可以类似于SQL那样查出自己需要的数据。主要是在流中通过筛选、排序等处理,以获取需要的结果。如下: public class TestStream { public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 1,1); // 获取数字为1的数量 int count = (int) nums.stream().filter(num -> num == 1).count(); System.out.println("coout:" + count); } }Base64,jdk8将Base64的编码器于解码器内置于其中,作为标准
日期时间API
Optional 类,该类是一个容器类,可以存null值,可通过isPresent判断是不是空
public static void main(String[] args) { String test1 = null; String test2 = "a"; Optional<String> optest1 = Optional.ofNullable(test1); Optional<String> optest2 = Optional.ofNullable(test2); //判断optest1是否存在值 if (optest1.isPresent()) { System.out.println("optest1 : " + optest1.get()); } else { System.out.println("optest1 is null!"); } //判断optest2是否存在值 if (optest2.isPresent()) { System.out.println("optest2 : " + optest2.get()); } else { System.out.println("optest2 is null!"); } } Nashorn JavaScript,使用 ScriptEngineManager, 就可以让JavaScript在 Java 中执行