Data已经过时了,不应该在新代码中使用(new Data())
对于构造器的每一个可变参数进行保护性拷贝,例如:
- package codeTemplate.effectiveJava.task;
-
- import codeTemplate.effectiveJava.service.BasicService;
-
- public class BasicTask implements Runnable{
- private final BasicService basicService;
- public BasicTask(BasicService basicService) {
- this.basicService = basicService;
- }
-
- @Override
- public void run() {
- }
- }
保护性拷贝是在检查参数的有效性之前进行的,并且有效性检查是针对拷贝之后的对象,而不是针对原始的对象
谨慎地选择方法的名称
不要过于追求遍历的方法
避免过长的参数列表,相同类型的长参数小序列格外有害
缩短过长参数列表的三个方法:1、把一个方法分解成多个方法,2、创建辅助类,3、从对象构建到方法调用都采用Builder模式
对于参数类型,要优先 使用接口而不是类,只要有适当的接口可用来定义参数与,就优先使用这个接口,而不是使用实现这个接口的类
对于boolean类型,要优先使用两个元素的枚举类型
public enum Sex{BOY,GIRL}
可变参数可以接受0个或者多个指定类型的参数,可变参数的机制是首先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法
- public static void aaa(String... args) {
- System.out.println(args);
- }
- aaa("123","345","3535");
- [Ljava.lang.String;@4e50df2e
在定义参数数目不定的方法时,可变参数方法是一种很方便的方式。在使用可变参数之前,要先包含所有必要的参数,并且要关注使用可变参数所带来的性能影响