effective java总结其一

mac2026-09-04  0

对象

1、equals、hashCode覆盖 1.1、hashCode、equals方法必须同时覆盖 1.2、覆盖equals必须满足自反性、对称性、一致性、非空性;相互equals的对象hashCode必须相同 1.3、最好使用lombok、AutoValue生成equals、hashCode方法 1.4、如果对象有放到集合比如ArrayList、HashSet的情况,最好覆盖equals、hashCode方法 2、toString必须覆盖 3、使用lombok避免样板式代码 常见的方法setXXX、getXXX、toString、hashCode以及builder模式都可以通过lombok实现 4、构造方法 4.1、构造函数的参数列表不要过长(>6)。如果需要构造多个字段的对象,可以考虑使用builder模式。 4.2、不需要构造的类,需要私有化构造函数 5、 其它 5.1、 谨慎使用clone方法 5.2、try-resources优先于try-finally 5.3、避免创建不必要的对象 5.4、比较相等使用equals,不要使用==。另外使用常量equlas变量,避免NPE 基本类型的包装类型

范型

1、不要使用原生类型 2、优先使用范型 涉及一些算法处理;自定义数据结构 3、谨慎并用泛型以及可变参数 4、了解每一种集合类型的使用场景,选取适合的集合类型。如果有并发操作,需要考虑线程安全的集合。 再次强调,需要注意包装类的影响;注意可能OOM的可能性,因为java集合没有严格限制集合的大小。 5、考虑使用Guava Collection或者Apache Collections

异常

1、不要捕捉RunTimeException、Throwable、Exception 2、尽量使用jdk自带异常 3、处理异常 3.1、异常转义 3.2、异常上下文 3.3、 对象原子性 事务一致性 3.4、spring异常处理器

方法

1、检查参数有效性 注意检查响应结果 2、必要时进行保护性拷贝 拷贝时注意合适的拷贝深度 3、谨慎设计参数签名 避免过长的参数列表、最好不用使用map作为参数、注意缩写、参数类型最好使用接口 4、慎用重载 5、返回空数组、集合、Optional,而不是null
最新回复(0)