您的位置:

JDK8新特性

一、Lambda表达式

JDK8引入了函数式编程的概念。Lambda表达式可以看作是一个匿名函数。它允许我们将函数作为参数传递给另一个函数,或者直接将代码块传递给变量。以下是Lambda表达式的代码示例:

// 传统的方式
List list = Arrays.asList(1, 2, 3, 4, 5);
for (Integer i : list) {
    System.out.print(i + " ");
}

// 使用Lambda表达式
List
    list = Arrays.asList(1, 2, 3, 4, 5);
list.forEach((Integer i) -> System.out.print(i + " "));

   
  

可以看到,使用Lambda表达式可以使代码更加简洁,而且更易读。

二、默认方法

接口中可以定义默认方法,该方法在接口中有一个默认实现,可以在实现接口的类中重写。以下是默认方法的代码示例:

interface MyInterface {
    default void defaultMethod() {
        System.out.println("This is a default method.");
    }
}

class MyClass implements MyInterface {
    // 重写默认方法
    public void defaultMethod() {
        System.out.println("This is a customized default method.");
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        myClass.defaultMethod(); // 输出 This is a customized default method.
    }
}

可以看到,在MyClass中重写了接口中的默认方法,使其具有了不同的实现。

三、Stream API

Stream是Java中的一个新抽象,用于处理集合等数据结构。它提供了一种声明式的处理方式,可以轻松地并行处理集合数据。以下是Stream API的代码示例:

List list = Arrays.asList(1, 2, 3, 4, 5);
// 使用Stream过滤出所有大于等于3的元素并输出
list.stream().filter(i -> i >= 3).forEach(System.out::println); 

  

可以看到,使用Stream API可以在不用编写循环的情况下,快速地过滤、映射和聚合集合数据。

四、方法引用

方法引用是Lambda表达式的一种简化语法,可以直接引用已有的方法或构造函数。以下是方法引用的代码示例:

// 将字符串数组转换为整型数组
List list = Arrays.asList("1", "2", "3", "4", "5");
int[] arr = list.stream().mapToInt(Integer::parseInt).toArray();

  

可以看到,使用方法引用可以进一步简化Lambda表达式的代码。

五、Optional类

Optional是一个容器类,用于保存对象,可以防止出现NullPointerException异常。以下是Optional类的代码示例:

public class OptionalTest {
    public static void main(String[] args) {
        String str = null;
        Optional optionalStr = Optional.ofNullable(str);
        System.out.println(optionalStr.orElse("default")); // 输出 default
    }
}

  

可以看到,使用Optional类可以使代码更加健壮,避免了因为NullPointerException而导致程序崩溃的情况。