在实现一个方法的时候 ,我们原则上尽量对方法的参数进行检查,为了防止有人破坏或者错误的使用自己的api,我们会在方法(例如构造函数)中对参数进行“保护性拷贝”, 并且保护性拷贝需要在对参数进行validity之前进行