上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页
摘要: 将设计良好的组件与设计不佳的组件区分开来的最重要的因素是,隐藏内部数据和其他实现细节的程度。一个设计良好的组件隐藏了它的所有实现细节,干净地将它的 API 与它的实现分离开来。然后,组件只通过它们的 API 进行通信,并且对彼此的内部工作一无所知。这一概念,被称为信息隐藏或封装,是软件设计的基本原则 阅读全文
posted @ 2020-04-06 18:15 webzom 阅读(140) 评论(0) 推荐(0)
摘要: compareTo 方法并没有在 Object 类中声明。 相反,它是 Comparable 接口中的唯一方法。 它与 Object 类的 equals 方法在性质上是相似的,除了它允许在简 单的相等比较之外的顺序比较,它是泛型的。 通过实现 Comparable 接口,一个类表明它的实例有一 个自 阅读全文
posted @ 2020-04-03 00:57 webzom 阅读(190) 评论(0) 推荐(0)
摘要: Cloneable 接口的目的是作为一个 mixin 接口 (详见第 20 条),公布这样的类允许克隆。不幸的 是,它没有达到这个目的。它的主要缺点是缺少 clone 方法,而 Object 的 clone 方法是受保护的。你不 能,不借助反射 (详见第 65 条),仅仅因为它实现了 Cloneab 阅读全文
posted @ 2020-04-01 03:49 webzom 阅读(900) 评论(0) 推荐(0)
摘要: 虽然 Object 类提供了 toString 方法的实现,但它返回的字符串通常不是你的类的用户想要看到的。它由类名后跟一个「at」符号(@)和哈希码的无符号十六进制表示组成,例如PhoneNumber@163b91 。 toString 的通用约定要求,返回的字符串应该是「一个简洁但内容丰富的表示 阅读全文
posted @ 2020-03-28 22:21 webzom 阅读(151) 评论(0) 推荐(0)
摘要: 在每个类中,在重写 equals 方法的时侯,一定要重写 hashcode 方法。 如果不这样做,你的类违反了 hashCode 的通用约定,这会阻止它在 HashMap 和 HashSet 这样的集合中正常工作。根据 Object 规范,以下时具体约定。1. 如果没有修改 equals 方法中用以 阅读全文
posted @ 2020-03-28 22:12 webzom 阅读(224) 评论(0) 推荐(0)
摘要: 重写 equals 方法时遵守通用约定 虽然 Object 是一个具体的类,但它主要是为继承而设计的。它的所有非 final 方法(equals、 hashCode、toString、clone 和 finalize)都有清晰的通用约定( general contracts),因为它们被设计为 被子 阅读全文
posted @ 2020-03-26 06:49 webzom 阅读(232) 评论(0) 推荐(0)
摘要: 使用 try-with-resources 语句替代 try-finally 语句 从以往来看,try-finally 语句是保证资源正确关闭的最佳方式,即使是在程序抛出异常或返回的情况 下: x static String firstLineOfFile(String path) throws I 阅读全文
posted @ 2020-03-25 02:56 webzom 阅读(319) 评论(0) 推荐(0)
摘要: Finalizer 机制是不可预知的,往往是危险的,而且通常是不必要的。 它们的使用会导致不稳定的行 为,糟糕的性能和移植性问题。 Finalizer 机制有一些特殊的用途,我们稍后会在这个条目中介绍,但是 通常应该避免它们。 从 Java 9 开始,Finalizer 机制已被弃用,但仍被 Jav 阅读全文
posted @ 2020-03-25 02:43 webzom 阅读(232) 评论(0) 推荐(0)
摘要: 消除过期的对象引用 考虑以下简单的栈实现: ​x public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; 阅读全文
posted @ 2020-03-24 05:51 webzom 阅读(154) 评论(0) 推荐(0)
摘要: 避免创建不必要的对象 在每次需要时重用一个对象而不是创建一个新的相同功能对象通常是恰当的。重用可以更快更流 行。如果对象是不可变的(详见第 17 条),它总是可以被重用。 作为一个不应该这样做的极端例子,请考虑以下语句: ​x String s = new String("bikini"); 语句每 阅读全文
posted @ 2020-03-24 05:44 webzom 阅读(137) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页