一、Lambda表达式
1、Lambda表达式是Java 8中最大的特性之一,它提供了一种简洁的方式来写匿名内部类。Java 8中,Lambda表达式的格式为( parameters ) -> expression
或( parameters ) -> { statements; }
,其中parameters
是函数参数,expression
或statements
是需要执行的代码块。
2、以下代码是使用Lambda表达式实现Runnable
接口的例子:
Runnable r = () -> System.out.println("Hello world");
Thread thread = new Thread(r);
thread.start();
3、通过使用Lambda表达式,可以省略掉匿名内部类中冗长的代码,使代码更加简洁易懂。
二、Stream API
1、Stream API是Java 8中新增的API,用于对集合进行批量操作。它包含了许多用于对集合进行筛选、映射、排序等操作的方法。
2、以下代码是使用Stream API对List
进行筛选和排序的例子:
List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = list.stream().filter(s -> s.startsWith("a")).sorted().collect(Collectors.toList());
3、通过使用Stream API,可以更加方便地对集合进行复杂的操作,同时也提高了代码的可读性和可维护性。
三、默认方法
1、在Java中,接口中的方法一般都是抽象方法,需要被实现。但是在Java 8中,接口中可以定义默认方法和静态方法,可以有自己的实现。 2、以下代码是定义接口中默认方法的例子:
public interface MyInterface {
default void sayHello() {
System.out.println("Hello World");
}
}
MyInterface myInterface = new MyInterface() {};
myInterface.sayHello();
3、通过定义默认方法,可以使接口中的方法更加灵活,同时也方便了接口的升级和维护。
四、方法引用
1、方法引用是一种简化Lambda表达式的方式,可以使用已有的方法来代替Lambda表达式中的代码块。
2、以下代码是使用方法引用实现Runnable
接口的例子:
Runnable r = System.out::println;
Thread thread = new Thread(r);
thread.start();
3、通过使用方法引用,可以使代码更加简洁易懂,同时也提高了代码的可读性和可维护性。
五、Optional类
1、Optional类是Java 8中新增的类,用于解决NullPointerException
异常的问题。
2、以下代码是使用Optional类的例子:
public class Person {
private String name;
private Optional<String> nickName;
public Person(String name, String nickName) {
this.name = name;
this.nickName = Optional.ofNullable(nickName);
}
public String getName() {
return name;
}
public Optional<String> getNickName() {
return nickName;
}
}
Person person1 = new Person("张三", "小三");
Person person2 = new Person("李四", null);
String nickName1 = person1.getNickName().orElse("无");
String nickName2 = person2.getNickName().orElse("无");
3、通过使用Optional类,可以有效地避免NullPointerException
异常,同时也提高了代码的可读性和可维护性。