effective Java
张小贤0
这个作者很懒,什么都没留下…
展开
-
创建和销毁对象
第一条:考虑用静态工厂方法代替构造器示例:public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE);}优势:他们有名称。不必在每次调用他们的时候都创建一个新对象。他们可以返回原返回类型的任何子类型的对象。在创建参数化类型实例的时候,它们使代码变得更加简洁缺点:类如果不含公有的或者受保护的构造器,就不原创 2016-09-09 21:52:01 · 438 阅读 · 0 评论 -
并发
第六十六条:同步访问共享的可变数据第六十七条:避免过度同步应该在同步区域内做尽可能少的工作第六十八条:executor和task优先于线程第六十九条:并发工具优先于wait和notify更高级的工具分成三类:Executor Framework、并发集合(ConCurrent Collection) 以及同步器(Synchronizer).第七十条:线程安全性的文档化第七十一条:慎用延迟初始原创 2017-01-24 20:52:46 · 202 阅读 · 0 评论 -
异常
第五十七条:只针对异常的情况才使用异常第五十八条:对可恢复的情况使用受检异常,对编程错误使用运行时异常第五十九条:避免不必要地使用受检的异常第六十条:优先使用标准的异常第六十一条:抛出与抽象相对应的异常第六十二条:每一个抛出的异常都要有文档第六十三条:在细节信息中包含能捕获失败的信息第六十四条:努力使失败保持原子性调整计算处理过程,使得任何可能会失败的计算部分都在对象状态被修改之前发生。 例如:原创 2017-01-21 15:21:28 · 247 阅读 · 0 评论 -
通用程序设计
第四十五条:将局部变量的作用域最小化要使局部变量的作用于最小化,最有力的方法就是在第一次使用它的地方声明。几乎每个局部变量的声明都应该包含一个初始化表达。使方法小而集中。第四十六条:for-each循环优先于传统的for循环第四十七条:了解和使用标准类库每个程序员都应该熟悉java.lang、java.util、java.io中的内容,关于其他类库的知识可以根据需要随时学习。在每个重要的原创 2017-01-21 00:03:49 · 333 阅读 · 0 评论 -
泛型
第二十三条:请不要在新代码中使用原生态类型List 原生态类型就是List如果使用原生态类型,就失掉了泛型在安全性和表达性方面的所有优势;List是原生类型,List为泛型。第二十四条:消除非受检警告应该始终在尽可能小的范围中使用SuppressWarnings注解。第二十五条:列表优先于数组第二十六条:优先考虑泛型第二十七条:优先考虑泛型方法第二十八条:利用有限制的通配符来提升API的灵活原创 2016-12-30 23:58:47 · 300 阅读 · 0 评论 -
类和接口
第十三条:使类和成员的可访问性最小化。控制类和成员的访问级别已解除各模块之间的耦合关系,使模块间可以独立的开发、测试尽可能地使每个类或者成员不被外界访问。类的成员访问级别为:私有的(private)、包级私有的(package-private)–缺省访问级别、受保护的(protected)–子类或内部类可以访问、公有的(public)实例域决不能是公有的。包含公有可变域的类并不是线程安全的。原创 2016-12-28 22:08:31 · 275 阅读 · 0 评论 -
方法
第三十八条:检查参数的有效性在这个方法执行之前先对参数进行检查。第三十九条:必要时进行保护性拷贝对于构造器的每一个可变参数(指引用类型参数)进行保护性拷贝是必要的,防止其他对方改变值,从而避过这些参数需要满足的条件。 public Period(Date start,Date end){ this.start=new Date(start.getTime())原创 2017-01-03 22:20:45 · 289 阅读 · 0 评论 -
枚举和注解
第三十条:用枚举代替int常量第三十一条:用实例域代替序数第三十二条:用EnumSet代替位域第三十三条:用EnumMap代替序数索引最好不用用序数即调用枚举的ordinal()得到的序数来做键值。而要使用EnumMap。第三十四条:用接口模拟可伸缩的枚举第三十五条:注解优先于命名模式命名模式的例子:JUnit测试框架原本要求用户一定要用test作为测试方法名称的开头。这一种有很多缺点,不推荐原创 2017-01-02 21:36:08 · 483 阅读 · 0 评论 -
对于所有对象都通用的方法
第八条:覆盖equals时请遵守通用约定Object的equals()的规范【JAVASE6】:自反性。对于任何非null的引用值x,x.equals(x)必须返回true。对称性,对于任何非null的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。传递性。x,y,z,如果x.equals(y)为true,y.equals(z)为true,那原创 2016-09-11 23:15:49 · 458 阅读 · 0 评论 -
序列化
第七十四条:谨慎地实现Serializable接口实现Serializable接口而付出的最大代价是,一旦一个类被发布,就大大降低了“改变这个类的实现”的灵活性。第二个代价是,它增加了出现Bug和安全漏洞的可能性。第三个代价是,随着类发行新的版本,相关的测试负担也增加了。第七十五条:考虑使用自定义的序列化形式第七十六条:保护性地编写readObject方法第七十七条:对于实例控制,枚举类型优原创 2017-01-24 22:29:53 · 244 阅读 · 0 评论