第8条:覆盖equals时请遵守通用约定 覆盖equals方法看起来似乎很简单,但是有许多覆盖方式会导致错误,并且后果非常严重。最容易避免这类问题的办法就是不覆盖equals方法,在这种情况下,类的每个实例都只与它自身相等。 那么,什么时候应该覆盖Object.equals呢?如果类具有自己特有的“... ...
分类:
编程语言 时间:
2017-09-30 15:14:03
阅读次数:
158
第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常 Java程序设计语言提供了三种可抛出结构(throwable) ;受检的异常(checked exception)运行时异常(run-time exception)和错误(error)。 受检的异常是潜在指示 在决定使用受检的异常或是未... ...
分类:
编程语言 时间:
2017-09-30 15:12:01
阅读次数:
174
第13条:使类和成员的可访问性最小化 第一规则很简单:尽可能地使每个类或者成员不被外界访问。换句话说。应该使用与你正在编写的软件的对应功能相一致的、尽可能最小的访问级别。 对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别:包级私有的(package-private)和公有的(public)。如... ...
分类:
编程语言 时间:
2017-09-30 15:07:38
阅读次数:
225
第66条:同步访问共享的可变数据 Java语言规范保证读或者写一个变量是原子的(atomic ) ,除非这个变量的类型为long或者double. [java中long和double类型操作的非原子性探究]( http://blog.csdn.net/zhaifengmin/article/deta... ...
分类:
编程语言 时间:
2017-09-30 15:06:50
阅读次数:
160
第30条:用enum代替int常量 将加班工资计算移到一个私有的嵌套枚举中,将这个策略枚举(strategy enum)的实例传到PayrollDay枚举的构造器中。之后PayrollDay枚举将加班工资计算委托给策略枚举: 以上,方法overtimePay()在每个枚举类示例中实现,对外提供一致的... ...
分类:
编程语言 时间:
2017-09-30 15:04:04
阅读次数:
171
第38条:检查参数的有效性 对于公有的方法,要用javadoc的@throws标签(tag)在文档中说明违反参数值限制时会抛出的异常。这样的异常通常为IllegalArgumentException, IndexOutOfBoundsException或NullPointerException. 非... ...
分类:
编程语言 时间:
2017-09-30 15:03:34
阅读次数:
178
第23条:请不要在新代码中使用原生态类型 声明中具有一个或者多个类型参数( type parameter)的类或者接口,就是泛型(generic)类或者接口。 每种泛型定义一组参数化的类型(parameterized type),构成格式为: 先是类或者接口的名称,接着用尖括号()把对应于泛型形式类... ...
分类:
编程语言 时间:
2017-09-30 14:56:33
阅读次数:
177
“将一个对象编码成一个字节流”,称作将该对象序列化(serializing); 相反的处理过程被称作反序列化(deserializing),一旦对象被序列化后,它的编码就可以从一台正在运行的虚拟机被传递到另一台虚拟机上,或者被存储到磁盘上,供以后反序列化时用。序列化技术为远程通信提供了标准的线路级(... ...
分类:
编程语言 时间:
2017-09-30 14:55:06
阅读次数:
181
若想令自己缩写的对象具有拷贝功能, 则需要实现 NSCopying 协议, 如果自定义的对象分为可变版本与不可变版本, 那么就要同时实现 NSCopying 协议和 NSMutableCopying 协议 复制对象是需要决定采用浅拷贝还是深拷贝, 一般情况下采用浅拷贝, 如果你所写的对象需要深拷贝, ...
分类:
移动开发 时间:
2017-09-29 12:45:59
阅读次数:
255
静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数。 当一个类中有若干个必选属性和多个可选属性时,采用重叠构造器模式、JavaBeans模式或者Builder模式,但各有优劣。 当有很多参数的时候,重叠构造器模式下客户端代码会很难编写,并且仍然较难以阅读。 JavaBeans模式 ...
分类:
编程语言 时间:
2017-09-28 16:44:00
阅读次数:
245