第3章 高级特性的暗面


文档摘要

第3章 · 高级特性的暗面 章节摘要:异常处理、泛型、注解反射、Stream——这些"高级特性"各自都有一类标志性事故:异常被静默吞掉让排错变成猜谜;泛型擦除让运行时的类型假设崩塌;反射在框架里威力巨大、在热点路径上开销刺眼;Stream 的惰性求值让副作用延迟到意想不到的时刻。本章逐个拆解。 学习目标 识别四类坏味道的异常处理(空 catch、catch 后仅打日志继续、finally 吞异常、异常当流程控制) 说清类型擦除的规则与它导致的三个运行时后果 解释反射的性能构成,掌握框架中"反射一次、缓存复用"的模式 预判 Stream 中惰性求值、复用与副作用三类陷阱 核心概念速览 特性越"聪明",出错时的表现越反直觉——高级特性的暗面都在省掉的代码里。 子章节导航 3.

第3章 · 高级特性的暗面

章节摘要:异常处理、泛型、注解反射、Stream——这些"高级特性"各自都有一类标志性事故:异常被静默吞掉让排错变成猜谜;泛型擦除让运行时的类型假设崩塌;反射在框架里威力巨大、在热点路径上开销刺眼;Stream 的惰性求值让副作用延迟到意想不到的时刻。本章逐个拆解。

学习目标

  1. 识别四类坏味道的异常处理(空 catch、catch 后仅打日志继续、finally 吞异常、异常当流程控制)
  2. 说清类型擦除的规则与它导致的三个运行时后果
  3. 解释反射的性能构成,掌握框架中"反射一次、缓存复用"的模式
  4. 预判 Stream 中惰性求值、复用与副作用三类陷阱

核心概念速览

特性越"聪明",出错时的表现越反直觉——高级特性的暗面都在省掉的代码里。

子章节导航

3.1 被吞掉的异常与 try 坑

一个 catch (Exception e) {} 让支付回调丢了三天,日志干净得像没发生过任何事。

3.2 泛型擦除引发的类型事故

编译期岁月静好,运行时 ClassCastException 从一个看似不可能的位置冒出来。

3.3 注解与反射的性能账

同一个接口,压测 QPS 差三倍,差价全在每次请求里重复做的反射查找上。

3.4 Stream 里的隐形陷阱

一段"只是换个写法"的 Stream 重构,把副作用挪到了关闭的资源上。

子章节之间的逻辑关系

四个特性共享一条主线:它们都在"编译期/声明期"隐藏信息,事故发生在"运行期"信息对不上的时刻

特性 隐藏了什么 运行期反噬 ---------- ------------------- ---------------------- 异常处理 失败路径 吞异常 → 排错无日志 泛型 类型参数 擦除 → CCE 位置诡异 反射 直接调用的字形码 开销 → 热点 QPS 塌 Stream 执行时机 惰性 → 副作用迟到

前置知识与后续延伸

  • 前置:第 2 章的类设计与引用关系。
  • 为后续铺垫:第 4 章集合与 IO 的大量 API 以异常语义为底;第 7 章框架的元编程建立在注解反射之上;第 8 章性能调优会再次遇到反射与 Stream 的账单。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U