Java设计模式:Acyclic Visitor

本文主要介绍 Acyclic Visitor 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 Java Design Patterns 提供了各种 Java 设计模式的介绍、示例代码和用例说明。该网站旨在帮助 Java 开发人员了解和应用各种常见的设计模式,以提高代码的可读性、可维护性和可扩展性。 ...

2023-06-01 · 13 min · 6411 words · chensoul

《Effective Java 3》笔记12:当覆盖 equals 方法时,总要覆盖 hashCode 方法

本文是 《Effective Java 3》第三章《对象的通用方法》的学习笔记:始终覆盖 toString 方法。 介绍 虽然 Object 提供 toString 方法的实现,但它返回的字符串通常不是类的用户希望看到的。它由后跟「at」符号(@)的类名和 hash 代码的无符号十六进制表示(例如 PhoneNumber@163b91)组成。toString 的通用约定是这么描述的,返回的字符串应该是「简洁但信息丰富的表示,易于阅读」。虽然有人认为 PhoneNumber@163b91 简洁易懂,但与 707-867-5309 相比,它的信息量并不大。toString 约定接着描述,「建议所有子类覆盖此方法。」好建议,确实! ...

2023-05-26 · 7 min · 3162 words · chensoul

《Effective Java 3》笔记13:明智地覆盖 clone 方法

本文是 《Effective Java 3》第三章《对象的通用方法》的学习笔记:明智地覆盖 clone 方法。 介绍 Cloneable 接口的目的是作为 mixin 接口,用于让类来宣称它们允许克隆。不幸的是,它没有达到这个目的。它的主要缺点是缺少 clone 方法,并且 Object 类的 clone 方法是受保护的。如果不求助于反射,就不能仅仅因为对象实现了 Cloneable 接口就能调用 clone 方法。即使反射调用也可能失败,因为不能保证对象具有可访问的 clone 方法。尽管存在多种缺陷,但该机制的使用范围相当广泛,因此理解它是值得的。本条目将告诉你如何实现行为良好的 clone 方法,讨论什么时候应该这样做,并提供替代方案。 ...

2023-05-26 · 16 min · 7657 words · chensoul

《Effective Java 3》笔记14:考虑实现 Comparable 接口

本文是 《Effective Java 3》第三章《对象的通用方法》的学习笔记:考虑实现 Comparable 接口。 介绍 与本章讨论的其他方法不同,compareTo 方法不是在 Object 中声明的。相反,它是 Comparable 接口中的唯一方法。它在性质上类似于 Object 的 equals 方法,除了简单的相等比较之外,它还允许顺序比较,而且它是通用的。一个类实现 Comparable,表明实例具有自然顺序。对实现 Comparable 的对象数组进行排序非常简单: ...

2023-05-26 · 10 min · 4999 words · chensoul

Java设计模式:Active Object

本文主要介绍 Active Object 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 Java Design Patterns 提供了各种 Java 设计模式的介绍、示例代码和用例说明。该网站旨在帮助 Java 开发人员了解和应用各种常见的设计模式,以提高代码的可读性、可维护性和可扩展性。 ...

2023-05-26 · 22 min · 10901 words · chensoul

《Effective Java 3》笔记11:当覆盖 equals 方法时,总要覆盖 hashCode 方法

本文是 《Effective Java 3》第三章《对象的通用方法》的学习笔记:当覆盖 equals 方法时,总要覆盖 hashCode 方法。 介绍 在覆盖了 equals 方法的类中,必须覆盖 hashCode 方法。 如果你没有这样做,该类将违反 hashCode 方法的一般约定,这将阻止该类在 HashMap 和 HashSet 等集合中正常运行。以下是根据 Object 规范修改的约定: ...

2023-05-23 · 11 min · 5392 words · chensoul

Java设计模式:Abstract Document

本文主要介绍 Abstract Document 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 Java Design Patterns 提供了各种 Java 设计模式的介绍、示例代码和用例说明。该网站旨在帮助 Java 开发人员了解和应用各种常见的设计模式,以提高代码的可读性、可维护性和可扩展性。 ...

2023-05-22 · 11 min · 5077 words · chensoul

Java设计模式:Abstract Factory

本文主要介绍 Abstract Factory 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 Java Design Patterns 提供了各种 Java 设计模式的介绍、示例代码和用例说明。该网站旨在帮助 Java 开发人员了解和应用各种常见的设计模式,以提高代码的可读性、可维护性和可扩展性。 ...

2023-05-22 · 7 min · 3415 words · chensoul

JSR 166规范

JSR 介绍 JSR,全称 Java Specification Requests, 即 Java 规范提案, 主要是用于向 JCP(Java Community Process) 提出新增标准化技术规范的正式请求。每次 JAVA 版本更新都会有对应的 JSR 更新,比如在 Java 8 版本中,其新特性 Lambda 表达式对应的是 JSR 335,新的日期和时间 API 对应的是 JSR 310。 ...

2023-05-18 · 9 min · 4204 words · chensoul

《Effective Java 3》笔记10:覆盖equals方法时应遵守的约定

本文是 《Effective Java 3》第三章《对象的通用方法》的学习笔记:覆盖 equals 方法时应遵守的约定。 介绍 覆盖 equals 方法似乎很简单,但是有很多覆盖的方式会导致出错,而且后果可能非常严重。避免问题的最简单方法是不覆盖 equals 方法,在这种情况下,类的每个实例都只等于它自己。如果符合下列任何条件,就是正确的做法: ...

2023-05-17 · 18 min · 8667 words · chensoul