Effective Java
Effective Java
Fighting_初心
种一棵树最好的时间是十年前,其次是现在。
展开
-
Effective Java 总结
本专栏文章为《Effective Java》一书内容的总结提炼。该书总结了优秀Java程序员必备的78条经验总结,这些经验总结针对Java程序员每天都会遇到的编程问题提出了最有效、最实用的解决方案。每条经验总结都详细阐明了应该怎么做,不应该怎么做,以及这样做的原因。 同《Java编程思想》一样,本书也是Java编程的必读书目之一,熟练掌握书中的各条经验总结,必将大幅...原创 2020-02-10 18:37:10 · 2620 阅读 · 0 评论 -
Effective Java(十)
十、序列化1. 谨慎地使用Serializable接口 使一个类的实例可被序列化,只需要让它实现Serializable接口即可。因为简单,程序员普遍对序列化存在误解,以为不需要做什么工作就可以实现序列化,实际的情形却复杂的多。实现Serializable的代价有:(1)一旦一个类被发布,就大大降低了改变这个类的实现的灵活性 一个类实现了Serializa...原创 2020-02-10 18:20:50 · 297 阅读 · 0 评论 -
Effective Java(九)
九、并发1. 同步访问共享的可变数据 同步的语义不仅包含互斥,还包含可见性,可见性保证了进入同步方法或同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。 Java语言规范保证读/写一个变量是原子的,除非这个变量的类型是long或double。也即是说,读取一个非long或double类型的变量,可以保证返回的值是某个线程保存在该变量中的,即使多个...原创 2020-02-10 17:46:40 · 278 阅读 · 0 评论 -
Effective Java(八)
八、异常1. 只针对异常的情况才使用异常 异常机制的设计初衷是用于不正常的情形,它只能用于异常的情况,永远不应该用于正常的控制流。 设计良好的API不应该强迫它的客户端为了正常的控制流而使用异常。如果类具有“状态相关”的方法,这个类往往也应该有个单独的“状态测试”方法,指示是否可以调用这个状态相关的方法。例如,Iterator接口有一个“状态相关”的next(...原创 2020-02-10 17:04:33 · 295 阅读 · 0 评论 -
Effective Java(七)
七、通用程序设计1. 将局部变量的作用域最小化 同“使类和成员的可访问性最小化”一样,将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。 Java允许在任何可以出现语句的地方声明变量,所以,最好的方法就是在第一次使用它的地方声明并初始化。 循环中提供了特殊的机会来将变量的作用域最小化,它们的作用域被限定在正好需要的...原创 2020-02-10 16:20:02 · 303 阅读 · 0 评论 -
Effective Java(六)
六、方法1. 检查参数的有效性 绝大多数方法和构造器对于传递给它们的参数值都会有某些限制,应该在文档中清楚地指明这些限制,并且在方法体的开头处检查参数,以强制施加这些限制。这样做可以及早地发现并处理错误。public BigInteger mod (BigInteger m) { if (m.signum() <= 0 ) { throw ...原创 2020-02-10 12:11:48 · 275 阅读 · 0 评论 -
Effective Java(五)
五、枚举和注解1. 用enum代替int常数 枚举类型是指由一组固定的常量组成合法值的类型,在编程语言没有引入枚举之前,表示枚举类型的常用模式是声明一组具名的int常量,每个类型成员一个常量:public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public s...原创 2020-02-10 10:37:25 · 195 阅读 · 0 评论 -
Effective Java(四)
四、泛型1. 请不要再新代码中使用原生态类型 泛型类/接口:声明中具有一个或者多个类型参数的类/接口。 每个泛型都定义一个原生态类型,即不带任何实际类型参数的泛型名称。如与List<E>相对应的原生态类型就是List。原生态类型没有泛型在安全性和表述性方面的优势,它的存在仅是为了兼容引入泛型之前的遗留代码,不应在新代码中继续使用。//使用原...原创 2020-02-09 19:54:22 · 349 阅读 · 0 评论 -
Effective Java(三)
三、类和接口1. 使类和成员的可访问性最小化 要区别设计良好的模块与设计不好的模块,最重要的因素在于:这个模块对于外界的其他模块而言,是否隐藏其内部数据和其他实现细节。一个模块不需要知道其他模块的内部工作情况,这个概念被称为信息隐藏或封装,是软件设计的基本原则之一。 访问控制(类、接口和成员的可访问性)的第一原则:尽可能地使每个类或者成员不被外界访问,即应使...原创 2020-02-09 17:33:12 · 410 阅读 · 0 评论 -
Effective Java(二)
二、对于所有对象都通用的方法1. 覆盖equals时请遵守通用约定不需要覆盖equals的情况: 类的每个实例本质上都是唯一的。代表的是活动实体而不是值,例如Thread; 不关心类是否提供逻辑相等的测试功能。如java.util.Random; 父类已经覆盖了equals,从父类继承过来的行为对于子类也是合适的。例如:大部分的Set实现都从AbstractSet...原创 2020-01-10 16:32:49 · 221 阅读 · 0 评论 -
Effective Java(一)
一、创建和销毁对象1. 考虑用静态工厂方法代替构造方法创建对象 1)构造方法创建:public Boolean(String s) { this(toBoolean(s));}Boolean bTrue = new Boolean("true"); 2)静态工厂创建:public static Boolean valueOf(String s) { ...原创 2020-01-06 12:03:38 · 456 阅读 · 0 评论