diff --git a/docs/chapter05.md b/docs/chapter05.md index 0c14372..6d6d121 100644 --- a/docs/chapter05.md +++ b/docs/chapter05.md @@ -85,11 +85,120 @@ public @interface 注解名称{ - 使用注解: 在代码中应用注解。 - 读取注解: 通过反射或其他机制读取并处理注解。 +#### 5.1.3 `Lambda`表达式(掌握) + +Lambda 表达式是 Java 8 引入的一个重要特性,它允许你以简洁的语法编写匿名函数。Lambda 表达式主要用于实现单个抽象方法的接口,这些接口通常被称为函数式接口(Functional Interface)。以下是 Java 中 Lambda 表达式的简单教程: + +##### 函数式接口(Functional Interface) + +函数式接口只有一个抽象方法的接口。为了声明一个函数式接口,你可以使用 `@FunctionalInterface` 注解,这样可以确保接口只有一个抽象方法。 + +```java +@FunctionalInterface +public interface SimpleFunctionalInterface { + void doSomething(); +} +``` + +##### Lambda 表达式的基本语法 + +Lambda 表达式的一般语法是: + +```java +(parameters) -> expression +或者 +(parameters) -> { statements; } +``` + +- `parameters`:这是参数列表,可以是一个或多个参数,参数类型可以省略。 +- `->`:这是 Lambda 操作符,将参数部分与 Lambda 体分开。 +- `expression` 或 `statements`:这是 Lambda 体,可以是一个表达式或一个代码块。 + +##### 使用 Lambda 表达式 + +###### 无参数和无返回值 + +```java +SimpleFunctionalInterface sfi = () -> System.out.println("Hello Lambda!"); +sfi.doSomething(); // 输出 "Hello Lambda!" +``` + +###### 一个参数和无返回值 + +```java +@FunctionalInterface +interface Greeting { + void greet(String name); +} + +Greeting greet = (String name) -> System.out.println("Hello, " + name); +greet.greet("Kimi"); // 输出 "Hello, Kimi" +``` + +###### 一个参数和有返回值 + +```java +@FunctionalInterface +interface Converter { + String convert(String from, String to); +} + +Converter converter = (from, to) -> from.toUpperCase() + to.toLowerCase(); +System.out.println(converter.convert("Java", "Python")); // 输出 "JAVApython" +``` + +###### 多个参数和有返回值 + +```java +@FunctionalInterface +interface Calculator { + int calculate(int a, int b); +} + +Calculator add = (a, b) -> a + b; +System.out.println(add.calculate(5, 10)); // 输出 15 +``` + +##### Lambda 表达式与方法引用 + +如果 Lambda 表达式实现的是一个已有的方法,你可以使用方法引用来简化代码。 + +###### 静态方法引用 + +```java +Converter concat = String::concat; +System.out.println(concat.convert("Hello, ", "Kimi")); // 输出 "Hello, KimiHello, " +``` + +###### 实例方法引用 + +```java +Converter append = StringBuilder::append; +System.out.println(append.convert("Hello, ", "Kimi")); // 输出 "Hello, Kimi" +``` + +###### 构造函数引用 + +```java +Converter toStringBuilder = StringBuilder::new; +System.out.println(toStringBuilder.convert("Hello, ", "Kimi")); // 输出 "Hello, Kimi" +``` + +##### Lambda 表达式与 Stream API + +Lambda 表达式在处理集合时非常有用,特别是与 Java 8 引入的 Stream API 结合使用。 + +```java +List names = Arrays.asList("Kimi", "Alice", "Bob", "Charlie"); +names.stream() + .filter(name -> name.startsWith("A")) + .forEach(System.out::println); // 输出 "Alice" +``` + +这个简单教程介绍了 Lambda 表达式的基本概念和用法。通过使用 Lambda 表达式,你可以编写更简洁、更易读的代码。 - - -### 5.1.3 `Optional` 的介绍和使用(了解) +#### 5.1.4 `Optional` 的介绍和使用(掌握) #### 定义 `Optional` 是 Java 8 引入的一个容器类,用于封装可能为 `null` 的值。它的主要目的是帮助开发者避免空指针异常,并提供一种更优雅的方式来处理可能不存在的值。 @@ -168,7 +277,7 @@ public class OptionalExample { 通过使用 `Optional`,开发者可以写出更加健壮和易于维护的代码。 -### 5.1.4 Stream API 的介绍和使用(了解) +#### 5.1.5 Stream API 的介绍和使用(了解) #### 定义 Stream API 是 Java 8 引入的新特性,用于处理集合数据。它提供了一种声明式的、函数式风格的数据处理方式,使得处理集合数据变得更加简洁和高效。 @@ -240,7 +349,7 @@ public class StreamExample { 通过使用 Stream API,开发者可以写出更加高效、简洁且易于维护的代码。这对于处理大量数据集尤其有用,同时也提高了代码的可读性和可维护性。 -### 5.1.5 泛型(了解) +#### 5.1.6 泛型(了解) #### 什么是泛型? @@ -676,9 +785,9 @@ java项目常用的构建工具有: 好的,以下是针对 Maven 和 Gradle 的具体使用方法的介绍,以完成你的文档的 5.7.1 和 5.7.2 部分。 -### 5.7.1 Maven +#### 5.7.1 Maven -#### 5.7.1.1 独立Maven +##### 5.7.1.1 独立Maven ##### 安装 Maven @@ -714,7 +823,7 @@ cd path/to/your/project mvn clean package mvn package ``` -#### 5.7.1.2 在IDEA使用Maven +##### 5.7.1.2 在IDEA使用Maven **导入 Maven 项目** * 打开 IntelliJ IDEA @@ -731,9 +840,9 @@ IntelliJ IDEA 自带 Maven 插件,可以使用 Maven 插件来运行测试、 > **访问 Maven 工具窗口:** 在 IntelliJ IDEA 的右侧栏中找到 “Maven” 工具窗口。 如果没有显示,可以通过 “View” > “Tool Windows” > “Maven” 打开。 -### 5.7.2 Gradle +#### 5.7.2 Gradle -#### 5.7.2.1 单独 Gradle +##### 5.7.2.1 单独 Gradle ##### 安装 Gradle @@ -778,11 +887,11 @@ IntelliJ IDEA 自带 Maven 插件,可以使用 Maven 插件来运行测试、 - **清理项目**: `./gradlew clean` (Linux/macOS) - `gradlew.bat clean` (Windows) -#### 5.7.2.2 IDEA中使用Gradle +##### 5.7.2.2 IDEA中使用Gradle 在 IntelliJ IDEA 中使用 Gradle 同样可以提高开发效率,因为 IDEA 提供了对 Gradle 的深度集成支持。以下是详细的步骤说明如何在 IntelliJ IDEA 中使用 Gradle: -### 5.7.2.2 在 IntelliJ IDEA 中使用 Gradle +##### 5.7.2.3 在 IntelliJ IDEA 中使用 Gradle #### 创建新的 Gradle 项目