2022年4月21日

【Effective Java 17】使可变性最小化

摘要: 不可变类是指其实例不能被修改的类。每个实例中包含的所有信息都必须在创建该实例的时候就提供,并在对象的整个生命周期(lifetime)内固定不变。Java 平台类库中包含许多不可变的类,其中有 String、基本类型的包装类、BigInteger 和 BigDecimal。存在不可变的类有许多理由:不 阅读全文

posted @ 2022-04-21 13:45 Silgm 阅读(45) 评论(0) 推荐(0) 编辑

2022年4月18日

【Effective Java 16】要在公有类中使用访问方法而非公有域

摘要: 对于公有类(类可以在它所在的包之外进行访问),必须通过get、set方法来访问成员变量 对于包级私有、私有嵌套类,直接暴露它的数据域并没有本质错误。 阅读全文

posted @ 2022-04-18 16:02 Silgm 阅读(32) 评论(0) 推荐(0) 编辑

2022年4月15日

【Effective Java 15】使类和成员的可访问性最小化

摘要: 区分一个组件设计得好不好,取决于它对于外部的其他组件而言,是否隐藏了其内部数据和其他实现细节。设计良好的组件会隐藏所有的实现细节,把 API 与实现清晰地隔离开来。然后,组件之间只会通过 API 进行通信,一个模块不需要知道其他模块的内部工作情况。这个概念被称为信息隐藏(information hi 阅读全文

posted @ 2022-04-15 19:26 Silgm 阅读(39) 评论(0) 推荐(0) 编辑

2022年4月13日

【Effective Java 14】考虑实现 Comparable 接口

摘要: 1. 什么时候应该让类实现 Comparable 接口 Comparable 接口是一个泛型接口,代码如下: public interface Comparable<T> { int compareTo(T t); } 类实现 Comparable 接口,就表明它的实例具有内在的排序关系,比如按照字 阅读全文

posted @ 2022-04-13 21:16 Silgm 阅读(62) 评论(0) 推荐(0) 编辑

2022年4月11日

【Effective Java 13】谨慎地覆盖 clone

摘要: 1. Object 中对 clone 接口的规范 clone 方法的通用约定是非常弱的,下面是来自 Object 规范中的约定内容: 创建和返回该对象的一个拷贝。这个 “拷贝” 的精确含义取决于该对象的类。一般的含义是,对于任何对象 x,有: x.clone() != x; // true x.cl 阅读全文

posted @ 2022-04-11 16:35 Silgm 阅读(73) 评论(0) 推荐(0) 编辑

【Effective Java 11】覆盖 equals 时总要覆盖 hashCode

摘要: 1. hashCode 的基本约定 每一个覆盖了 equals 方法的类中,都必须覆盖 hashCode 方法。如果不这样做的话,就会违反 hashCode 的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这类集合包括 HashMap 和 HashSet。下面是约定内容: 在同一个应 阅读全文

posted @ 2022-04-11 11:04 Silgm 阅读(58) 评论(0) 推荐(0) 编辑

2022年4月8日

【Effective Java 12】始终要覆盖 toString

摘要: 1. 为什么要始终覆盖 toString 遵守 toString 约定并不像遵守 equals 和 hashCode 的约定那么重要。但是,提供好的 toString 方法可以使类用起来更加舒适,使用这个类的系统也更易于调试。 2. 覆盖 toString 时的约定 在实际应用中,toString 阅读全文

posted @ 2022-04-08 15:32 Silgm 阅读(33) 评论(0) 推荐(0) 编辑

2022年4月6日

【Effective Java 10.6】覆盖 equals 时请遵守通用约定 —— 写出高质量 equals 方法的诀窍

摘要: 1. 实现高质量 equals 方法的诀窍 使用 == 操作符检查 ”参数是否为这个对象的引用“。如果是,则返回 true。这只是一种性能优化。引用相同,则必定相等,无需进行后续对值的比较。 使用 instanceof 操作检查 ”参数是否为正确的类型“。如果不是,则返回 false。一般来说,所谓 阅读全文

posted @ 2022-04-06 16:22 Silgm 阅读(20) 评论(0) 推荐(0) 编辑

2022年4月2日

【Effective Java 10.5】覆盖 equals 时请遵守通用约定 —— 非空性

摘要: 非空性(Non-Nullity)—— 所有的对象都不能等于 null。 实际上覆写 equals 时不需要显式地检查类型,因为在 instanceof 执行该判断, public boolean equals(Object o) { if (!(o instanceof MyType)) { // 阅读全文

posted @ 2022-04-02 20:09 Silgm 阅读(34) 评论(0) 推荐(0) 编辑

2022年4月1日

【Effective Java 10.4】覆盖 equals 时请遵守通用约定 —— 一致性

摘要: equals 约定的第四个要求是:如果两个对象相等,它们必须始终保持相等,除非它们中有一个对象(或者两个都)被修改了。换句话说,可变对象在不同的时候可以与不同的对象相等,而不可变对象则不会这样。当你在写一个类的时候,应该仔细考虑它是否应该是不可变的。不论类是否是不可变的,都不要使equals方法依赖 阅读全文

posted @ 2022-04-01 20:32 Silgm 阅读(29) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示