在Java 8发布以来,它引入了许多新特性,旨在简化编程任务,提高开发效率。这些新特性包括Lambda表达式、Stream API、日期时间API、Optional类等。下面,我将通过10个实用案例,带你领略Java 8新特性的魅力。
1. Lambda表达式
Lambda表达式是Java 8中最具革命性的特性之一。它允许开发者以更简洁的方式编写匿名函数。以下是一个使用Lambda表达式替换匿名内部类的例子:
传统方式:
interface GreetingService {
void greet(String name);
}
public class Main {
public static void main(String[] args) {
GreetingService service = new GreetingService() {
@Override
public void greet(String name) {
System.out.println("Hello, " + name);
}
};
service.greet("World");
}
}
使用Lambda表达式:
public class Main {
public static void main(String[] args) {
GreetingService service = (name) -> System.out.println("Hello, " + name);
service.greet("World");
}
}
2. Stream API
Stream API提供了对集合的高效操作。以下是一个使用Stream API进行过滤和映射的例子:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出: [2, 4, 6, 8, 10]
3. 日期时间API
Java 8的日期时间API提供了更简洁、易用的日期时间操作。以下是一个使用新日期时间API的例子:
LocalDate today = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println(formattedDateTime); // 输出: 2021-07-28 15:48:00
4. Optional类
Optional类用于避免空指针异常。以下是一个使用Optional类的例子:
Optional<String> optional = Optional.ofNullable(null);
System.out.println(optional.isPresent()); // 输出: false
System.out.println(optional.orElse("Default Value")); // 输出: Default Value
5. 新的集合类
Java 8引入了新的集合类,如Map.Entry、Stream、Collectors等。以下是一个使用新集合类的例子:
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
map.forEach((key, value) -> System.out.println(key + " = " + value));
6. 新的并发API
Java 8提供了新的并发API,如CompletableFuture。以下是一个使用CompletableFuture的例子:
public class Main {
public static void main(String[] args) {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Hello, World!";
});
future.thenApply(s -> "Modified: " + s)
.thenAccept(System.out::println);
}
}
7. 新的I/O API
Java 8的I/O API提供了更简洁、易用的文件操作。以下是一个使用新I/O API的例子:
Files.copy(Paths.get("src.txt"), Paths.get("dest.txt"));
8. 新的数学运算库
Java 8提供了新的数学运算库,如MathUtils。以下是一个使用新数学运算库的例子:
System.out.println(MathUtils.round(3.14159, 2)); // 输出: 3.14
9. 新的日期时间格式化工具
Java 8提供了新的日期时间格式化工具,如DateTimeFormatter。以下是一个使用新日期时间格式化工具的例子:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = ZonedDateTime.now().format(formatter);
System.out.println(formattedDateTime); // 输出: 2021-07-28 15:48:00
10. 新的文件系统API
Java 8提供了新的文件系统API,如Files、Paths。以下是一个使用新文件系统API的例子:
Path path = Paths.get("src.txt");
System.out.println(Files.size(path)); // 输出: 文件大小
通过以上10个实用案例,相信你已经对Java 8的新特性有了更深入的了解。掌握这些特性,将帮助你提高编程效率,更好地应对现代软件开发的需求。