异常(69-77) 69. 只针对异常的情况才使用异常如题。 70. 对可恢复的情况使用受检异常,对编程错误使用运行时异常如题。 71. 避免不必要的使用受检异常如题。 72. 优先使用标准异常最常见的可重用异常: 73. 抛出与抽象对应的异常更高层的实现应该捕获低层的异常,同时抛出可以按照高层抽象进行解释的异常。这种做法称为异常转译(exception translation)。 74. 每个方法抛出的所有异常 2020-09-16 02_编程语言 > 01_Java > 04_EffectiveJava #异常 #EffectiveJava
方法(49-56) 49. 检查参数有效性Java7 加入的 Objects.requireNonNull() 方法比较灵活且方便,因此不必再手工进行 null 检查。 50. 必要时进行保护性拷贝简而言之,如果一个类包含有从客户端得到或者返回到客户端的可变组件,这个类就必须保护性地拷贝这些组件。如果拷贝的成本受到限制,并且类信任它的客户端不会不恰当地修改组件,就可以在文档中指明客户端的职责是不得修改受到影响的组件 2020-09-16 02_编程语言 > 01_Java > 04_EffectiveJava #EffectiveJava #方法
枚举和注解(34-41) 34. 用 enum 代替 int 常量int 常量表示枚举类型: enum 类型表示枚举类型: 35. 用实例域代替序数永远不要根据枚举的序数导出与它关联的值,而是要将它保存在一个实例域中。 36. 用 EnumSet 代替位域枚举代替位域: 将 EnumSet 实例传递给 applyStyles 方法: 37. 用 EnumMap 代替序数索引java.util.EnumMap 3 2020-09-16 02_编程语言 > 01_Java > 04_EffectiveJava #注解 #EffectiveJava #枚举
泛型(26-33) 26. 不要使用原生态类型如果使用像 List 这样的原生态类型,就会失掉类型安全性,但是如果使用像 List<Object> 这样的参数化类型,则不会。 List 原生态类型 和 List<Object> 参数化类型的区别: 前者逃避了泛型检查 后者明确告知编译器,它能够持有任意类型的对象 不能将任何元素(除了 null 之外)放到 Collection< 2020-09-16 02_编程语言 > 01_Java > 04_EffectiveJava #EffectiveJava #泛型
类和接口(15-25) 15. 使类和成员的可访问性最小化尽可能使每个类或成员不被外界访问。 公有类的实例域决不能是公有的。 包含公有可变域的类通常并不是线程安全的。 让类具有公有的静态 final 数组域,或者返回这种域的访问方法,这是错误的。 16. 要在公有类而非公有域中使用访问方法如果类可以在它所在的包之外进行访问,就提供访问方法。 如果类是包级私有的,或是私有的嵌套类,直接暴露它的数据域并没有本质的错误。 17 2020-09-16 02_编程语言 > 01_Java > 04_EffectiveJava #接口 #EffectiveJava
通用编程(57-68) 57.将局部变量的作用域最小化要使局部变量的作用域最小化,最有力的方法就是在第一次要使用它的地方进行声明。 几乎每一个局部变量的声明都应该包含一个初始化表达式。 最后一种“将局部变量的作用域最小化”的方法是使方法小而集中。 58. for-each 循环优先于传统的 for 循环推荐增强 for 循环,或者 迭代器: 59. 使用类库从Java 7开始,就不应该再使用Random了。现在选择随 2020-09-16 02_编程语言 > 01_Java > 04_EffectiveJava #EffectiveJava #反射
责任链模式 参考资料1:http://c.biancheng.net/design_pattern/ 参考资料2:https://refactoringguru.cn/design-patterns/catalog 1. 介绍1.1 简介责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型 2020-09-12 10_设计模式 #设计模式
适配器模式 参考资料1:http://c.biancheng.net/design_pattern/ 参考资料2:https://refactoringguru.cn/design-patterns/catalog 1. 介绍1.1 简介适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。 属于结构型模式,它结合了两个独立接口的功能。 适配器模式通过定义一个新的接口(对要实现的功能 2020-09-12 10_设计模式 #设计模式
IdGenerator IdGenerator123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 2020-09-10 21_代码片段 > 01_工具类 #工具类
SqlBuildUtil SQL语句构建1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586import java.lang.reflect.Field 2020-09-04 21_代码片段 > 01_工具类 #工具类