
Effective Java
文章平均质量分 91
xiaoshanjnby
这个作者很懒,什么都没留下…
展开
-
Effective Java (方法)
三十八、检查参数的有效性: 绝大多数方法和构造器对于传递给它们的参数值都会有些限制。比如,索引值必须大于等于0,且不能超过其最大值,对象不能为null等。这样就可以在导致错误的源头将错误捕获,从而避免了该错误被延续到今后的某一时刻再被引发,这样就是加大了错误追查的难度。就如同编译期能够报出的错误总比在运行时才发现要更好一些。事实上,我们不仅仅需要在函数的内部开始出进行这些通用的参数有...原创 2014-01-08 12:34:36 · 148 阅读 · 0 评论 -
Effective Java (泛型)
二十三、请不要在新代码中使用原生态类型: 先简单介绍一下泛型的概念和声明形式。声明中具有一个或者多个类型参数的类或者接口,就是泛型类或接口,如List<E>,这其中E表示List集合中元素的类型。在Java中,相对于每个泛型类都有一个原生类与之对应,即不带任何实际类型参数的泛型名称,如List<E>的原生类型List。他们之间最为明显的区别在于List<...原创 2014-01-08 12:34:55 · 139 阅读 · 0 评论 -
Effective Java (对象通用方法)
八、覆盖equals时请遵守通用约定: 对于Object类中提供的equals方法在必要的时候是必要重载的,然而如果违背了一些通用的重载准则,将会给程序带来一些潜在的运行时错误。如果自定义的class没有重载该方法,那么该类实例之间的相等性的比较将是基于两个对象是否指向同一地址来判定的。因此对于以下几种情况可以考虑不重载该方法: 1. 类的每一个实例本质上都是唯一的。...原创 2014-01-08 12:35:11 · 109 阅读 · 0 评论 -
Effective Java (创建和销毁对象)
一、考虑用静态工厂方法代替构造器: 构造器是创建一个对象实例最基本也最通用的方法,大部分开发者在使用某个class的时候,首先需要考虑的就是如何构造和初始化一个对象示例,而构造的方式首先考虑到的就是通过构造函数来完成,因此在看javadoc中的文档时首先关注的函数也是构造器。然而在有些时候构造器并非我们唯一的选择,通过反射也是可以轻松达到的。我们这里主要提到的方式是通过静态类...原创 2014-01-08 12:35:42 · 159 阅读 · 0 评论 -
Effective Java (并发)
六十六、同步访问共享的可变数据: 在Java中很多时候都是通过synchronized关键字来实现共享对象之间的同步的。事实上,对象同步并不仅限于当多个线程操作同一可变对象时,仍然能够保证该共享对象的状态始终保持一致。与此同时,他还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。 Java的语言规范保证了读写一个变量是原子的,除非这个...原创 2014-01-09 12:23:09 · 137 阅读 · 1 评论 -
Effective Java (类和接口)
十三、使类和成员的可访问性最小化: 信息隐藏是软件程序设计的基本原则之一,面向对象又为这一设计原则提供了有力的支持和保障。这里我们简要列出几项受益于该原则的优势: 1. 更好的解除各个模块之间的耦合关系: 由于模块间的相互调用是基于接口契约的,每个模块只是负责完成自己内部既定的功能目标和单元测试,一旦今后出现性能优化或需求变更时,我们首先需要做的便是定位需要变...原创 2014-01-13 23:58:13 · 99 阅读 · 0 评论 -
Effective Java (枚举)
三十、用enum代替int常量: 枚举类型是指由一组固定的常量组成合法值的类型,该特征是在Java 1.5 中开始被支持的,之前的Java代码都是通过“公有静态常量域字段”的方法来简单模拟枚举的,如: public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1...原创 2014-01-14 00:00:10 · 144 阅读 · 0 评论