Java-Generics-PartII 泛型擦除 Java泛型是编译时(compile time)行为,在运行时(runtime)所有与泛型相关的信息都会被彻底擦除。擦除后,所有参数化类型都会统一还原为同一个原始类型(raw type)。这里引入一个新术语——原始类型,指的是泛型类 / 接口去掉所有泛型类型参数后的基础类型,也是泛型类型经过类型擦除后,JVM在运行时实际识别的类型。 12345System.out.println 2026-01-16 Java #Java #Generics
Java-Generics-PartI Java泛型是众多开发者面临的难点,尤其是涉及通配符的场景。许多开发者往往看得懂却写不出,在选择合适通配符时更是困惑不已。 本文整理自Angelika Langer关于Java泛型的探讨。泛型本身属于复杂议题,本系列无法涵盖所有细节,仅聚焦于易混淆且实战中高频使用的核心特性。建议读者具备基础泛型知识后,再阅读本文以提升理解效率。 术语 首先,需统一梳理泛型相关的核心术语。在阅读泛型代码时,明 2025-12-31 Java #Java #Generics
Design-Pattern-Postscript 今天,总算给设计模式系列画完了句号。回头看,这个系列的第一篇文章Design-Pattern-Relationships-Between-Objects是2023年6月12日发的,一晃已经过去两年半了。 这两年半的工作里,经验慢慢攒了些,心里也慢慢冒出了困惑:咱们深耕技术的价值,到底在哪儿呢?职场里仿佛是“业务为王”的天下,所有人都围着业务转,技术反倒成了无人问津的小透明。就连技术人自己,好像也 2025-12-17 DesignPattern #Java #DesignPattern
Design-Pattern-Visitor 访问者模式(Visitor)是一种行为型设计模式。其核心思想在于:分离数据结构与数据操作,支持在不修改现有数据结构的前提下,为其扩展新的操作逻辑。 场景 假设需开发一款办公文档处理程序,该文档由多种核心元素构成,具体包括标题、段落、文本、图片等。基于上述各类元素的共性特征,设计并定义了元素接口Element,各类具体元素均为该接口的实现类。 当前需对这些元素执行一系列操作,例如元素导出、格式 2025-12-16 DesignPattern #Java #DesignPattern
Design-Pattern-Template 模板模式(Template Pattern)是一种行为型设计模式,其核心思想是:在抽象父类中定义一个操作的算法骨架(模板),将部分步骤的具体实现延迟到子类中完成。通过这种方式,子类可以在不改变算法整体结构的前提下,重新定义算法中的某些特定步骤。 场景 假设需要生成三种格式的报表(PDF/Excel/HTML),初始方案简单定义了三个独立类分别处理数据生成与报表渲染。 12345678910 2025-11-21 DesignPattern #Java #DesignPattern
Design-Pattern-Strategy 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法(策略),并将每个算法封装起来,使它们可以互相替换,且不影响客户端的使用。 场景 在日常生活中,做一件事通常有多种方式。例如点外卖时,可以选择距离优先,好评优先对商家进行排序。从代码开发角度,如果存在多种排序规则,则可以定义一个排序方法,接受排序规则作为入参,一段典型的代码如下: 12345678910pu 2025-11-19 DesignPattern #Java #DesignPattern
Design-Pattern-State 状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为,对象看起来好像修改了它的类。 场景 笔者曾基于按键精灵开发过一些自动化软件,用于在PC端及移动设备上模拟用户点击与输入操作,从而自动完成游戏内的日常任务。其底层实现逻辑为:程序通过一个持续运行的死循环,定时截取当前屏幕画面,基于图像特征判断当前所处的游戏界面状态(如主菜单、战斗中、战斗结束等),随后依据预先配置的操作策略,执 2025-11-07 DesignPattern #Java #DesignPattern
Design-Pattern-Subscriber 观察者模式是一种行为设计模式,允许定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。 场景 在开发中,经常会使用异步任务,来处理耗时的操作(如网络请求、数据库查询、文件读写等I/O密集型任务)。由于任务实际耗时与完成时机不确定,若发起方需关注结果,可以通过以一定频率主动查询的方式获取处理状态,这种方式也被称为轮询(polling)。也可以由处理方,在结束后主动通知任务发起方 2025-10-29 DesignPattern #Java #DesignPattern
Design-Pattern-Memento 备忘录模式(Memento Pattern)是一种行为型设计模式,用于在不破坏封装的前提下,捕获并外部化一个对象的内部状态,以便在需要时将对象恢复到此前保存的状态。它常被称为快照模式,典型用于实现撤销/重做(Undo/Redo)、历史记录与回滚等能力。 在Design-Pattern-Command中提到过,命令模式常和撤销操作一起实现。而撤销的一种实现方式,就是使用状态快照,也就是将需要恢 2025-09-09 DesignPattern #Java #DesignPattern
Design-Pattern-Mediator 中介者模式通过引入一个中介对象,让原本相互依赖的多个对象改为通过中介者间接通信,从而降低耦合、提高灵活性和可维护性。 场景 有时会遇到这样的开发场景:多个组件互相依赖、交互,整体构成了一个大的应用。 最常见的例子是GUI,一个窗口内包含了各种组件,例如文本框、标签、按钮等。组件之间可能存在依赖关系。例如点击提交按钮,会对其他文本框的内容进行校验;选择某个单选按钮,其他按钮就会移除被选中的状态 2025-08-22 DesignPattern #Java #DesignPattern