>>696
防御的コピーの前に事前条件チェックは意味ないし、
オブジェクトの責務を考えれば、防御的コピーはそれをフィールドに格納するクラスが行うべき。

したがって、非公開なメソッド(コンストラクタを含む)まで事前条件のチェックが遅延されるかもしれないし、
その場合そこでIAEを投げざるを得ない。

また、オブジェクト指向の意味を考えれば
オブジェクトは、そのメソッドの呼び出しかたや順序に依存せずに整合性を保つことを保証することで、
一度に考えなければならない複雑さを各オブジェクトに分散・カプセル化しているのだから、
privateなどでカプセルの内側でありオブジェクト指向の範囲外であることを明示でもしてない限り
渡されてくるオブジェクトに対して、事前条件のチェックがされているのか、それとも遅延されているのか
判断する材料をそのオブジェクトの外に求めるのは、カプセル化に逆行する。