EffectiveJava 第六章 枚举和注解 (思维导图)

博客提供了EffectiveJava第六章枚举和注解的思维导图,同时给出了xmind文件的下载相关内容,聚焦于信息技术领域中书籍知识的可视化呈现。

EffectiveJava 第六章 枚举和注解 (思维导图)

xmind下载

第六章 枚举和注解

### 第6章 枚举注解 #### 枚举 - **枚举是单例的泛型化**:枚举类型是实例受控的,本质上是单例的泛型化,提供了比单例更简洁、更安全的实现方式。 - **枚举常量自带行为**:可以为枚举常量添加方法,使每个常量都有自己的行为。例如: ```java public enum Operation { PLUS("+") { @Override public double apply(double x, double y) { return x + y; } }, MINUS("-") { @Override public double apply(double x, double y) { return x - y; } }; private final String symbol; Operation(String symbol) { this.symbol = symbol; } public abstract double apply(double x, double y); } ``` - **枚举的比较**:枚举类型的比较可以直接使用 `==`,因为枚举实例是唯一的。 - **枚举的遍历**:可以使用 `values()` 方法获取枚举类型的所有实例,进行遍历操作。 #### 注解 - **元注解**:Java 提供了几种元注解,用于定义注解注解,如 `@Retention`、`@Target`、`@Documented` `@Inherited`。例如,`@Retention(RetentionPolicy.RUNTIME)` 表示该注解在运行时可见。 - **自定义注解**:可以根据需求自定义注解,例如: ```java import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Test { } ``` - **注解处理器**:可以编写注解处理器来处理自定义注解,在编译时或运行时执行特定的逻辑。 ### 第7章 LambdaStream #### Lambda 表达式 - **函式接口**:Lambda 表达式是针对函式接口(只有一个抽象方法的接口)的实例化方式。例如 `Runnable`、`Comparator` 等都是函式接口。 ```java Runnable r = () -> System.out.println("Hello Lambda"); ``` - **类型推导**:编译器会根据上下文进行类型推导,通常不需要显式指定 Lambda 表达式的参类型。 - **Lambda 与匿名内部类的区别**:Lambda 更简洁,并且没有自己的 `this` 引用,它使用的 `this` 是外部类的 `this`。 - **Lambda 的使用场景**:适用于简单的、一次性的逻辑,避免编写冗长的匿名内部类代码。但如果逻辑复杂、代码超过几行,可能会影响程序的可读性,此时应考虑重构代码 [^1]。 #### Stream - **流的创建**:可以从集合、等创建流,例如: ```java import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class StreamExample { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = list.stream(); } } ``` - **中间操作**:流的中间操作会返回一个新的流,例如 `filter`、`map`、`sorted` 等。 ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); ``` - **终端操作**:终端操作会触发流的执行,并产生一个结果,例如 `forEach`、`collect`、`reduce` 等。 - **并行流**:可以使用 `parallelStream()` 方法创建并行流,利用多核处理器进行并行处理,但使用时需要注意线程安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值