2. Even though Java is a safe language, it is still
possible for programmers to make safe mistakes
and destroy the invariants of an object
3.
4.
5.
6.
7.
8. When to not make defensive
When a collaborator is doing an explicit hand-off
of the object in the constructor
When it is very expensive to make copies
Model objects... eg: Hibernate pojo's