主頁

[Effective Java] Note: - Chapter-7-1: Design Method Signatures Carefully

方法签名主要指的是,方法的名称,参数和返回值。虽然返回值的类型不足以用来区别两个方法。主要有以下几点:首先,方法名要风格保持统一。其次,参数控制在4个以内。然后,要控制接口的方法数量。关于方法的参数,尽量使用接口,而不是类。最后记住在用可变长参数的时候,小心基本型。而且尽量不要重载参数数量相同的方法。

阅读更多

[Effective Java] Note: - Chapter-5-1: Generics

读这本书关键在于看到Joshua Bloch是怎么理解泛型的。第一个关键点在于泛型是在做减法,不是做加法。泛型并不是来泛化代码类型的。恰恰相反,泛型是用来在编译期提供类型约束的。实际上最无约束的泛化类型是使用Object。比如ArrayList里什么元素都可以放,但从此他们几乎不受任何类型检查的约束。ArrayList实际上是在说,编译期会检查并确保列表里的元素是字符串。第二个关键点是:有限制通配符,无限制通配符是在做加法,而不是做减法。当我们认为普通泛型精确的类型匹配太严格的时候,可以用有限或者无限通配符适当放宽条件。这里的标准是:PECS - Producer Extends, Consumer Super。第三个关键点,我认为是泛型方法。它最大的特点是可以帮我们做类型推导,但也有...

阅读更多

[Effective Java] Note: - Chapter-4-3: Define the Type and Behavior with Interface

接口可以模拟多继承,优于抽象类的单继承。但抽象类可以提供部分实现,所以“接口 + 骨架实现”的模式就结合了两者的有点。可以定义一个只定义了行为的类模拟“函数指针”和“策略模式”。但不要定义一个没有定义行为,只有静态常量的常量接口。常量接口不是一个良好实践。

阅读更多