第025篇 泛型通配符与 PECS:一句话讲清 extends 与 super
泛型通配符与PECS(Producer Extends, Consumer Super)是泛型核心难点。上界`? extends T`用于只读(生产者),下界`? super T`用于只写(消费者)。讲清“为何上界不能add、下界不能get”,结合`Collections.copy`等JDK源码实践,才能体现真理解——而非死记口诀。
第036篇 注解与元注解:Override 背后的机制
注解是附着于程序元素的结构化元数据,本身不执行逻辑,其作用完全取决于`@Retention`(生命周期)与`@Target`(作用位置)。`RUNTIME`级可反射读取,`CLASS`级仅存于字节码,`SOURCE`级编译即弃。元注解如`@Repeatable`(需容器)、`@Inherited`(仅类继承链生效)常被误用。编译期APT处理(如Room、Dagger)比运行时反射更高效。关键:显式声明Retention,勿信默认值;接口注解不被实现类继承;注解仅为意图声明,非功能保证。
第034篇 Iterator 与 fail-fast:并发修改异常的根源
Iterator 与 fail-fast 是 Java 集合的“防错机制”:通过 modCount 与 expectedModCount 校验,遍历中结构修改即抛 ConcurrentModificationException。它**不是并发安全保证**,仅单线程下尽早暴露错误;删除须用 it.remove(),多线程应选 CopyOnWriteArrayList 或加锁。
文字样式定制:字体、间距与文本渲染模式
本文详解jquick-pdf文字样式定制:涵盖字体(含CJK支持)、字号、颜色、字符/单词间距、文本渲染模式及装饰属性。强调中文疏排须用`characterSpacing`,`wordSpacing`对其无效;指出字体回退、间距副作用与描边取舍等关键细节,助你精准控制PDF文本呈现。
第035篇 反射基础:Class 对象与运行时类型信息
Java反射是运行期类型自省机制,通过Class对象动态获取并操作类成员(Method/Field/Constructor),支撑注解处理、DI、序列化等框架。需注意:`getDeclaredXxx`获取全部成员(含私有),`setAccessible(true)`突破访问限制(JDK9+受模块系统约束),`invoke`返回Object需手动强转,且应缓存Method以避免重复查找开销。
背景色与背景图片:元素级背景的配置与边界
本文详解 jquick-pdf 中 `backgroundColor` 与 `backgroundImage` 元素级背景属性的用法、边界及最佳实践:支持颜色/渐变/本地图片,颜色自动兜底;强调其不等于全局分页背景,需通过复用页面块实现统一底色;涵盖路径、尺寸、打印、多页性能等关键细节。
SVG 矢量图形嵌入:两条绑定路径与兼容边界
本文介绍jquick-pdfx如何将SVG矢量图嵌入PDF,解决缩放模糊与锯齿问题。提供两条路径:变量绑定`${svg}`(适合动态单次生成)和资源引用`&{svg}`(适合复用图表模块)。支持JDK8+、Maven3.6+,仅需少量依赖,兼容基础SVG元素(rect/text等),不支持脚本与外部引用。