Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Slight clarifications.

...

Even though SomeType is immutable, this declaration allows the SOMETHINGS array to be modified by untrusted clients of the code. Any element of the array can be assigned a new SomeType object, which would effectively assign a new value to that array elementvalue, namely a reference to a new SomeType object.

This noncompliant code example also violates OBJ01-J. Limit accessibility of fields.

...

Even though SomeType is immutable, the public getter method enables untrusted clients to modify the SOMETHINGS array. Any element of the array can be assigned a new SomeType object, which would effectively assign a new value to that array elementvalue, namely a reference to a new SomeType object.

Compliant Solution (clone)

...

Now, the original array cannot be modified by any client.  If SomeType were mutable, this approach would not be effective because the array clone references the same SomeType objects as the SOMETHINGS array. If the client changed modified the clone SomeType objects directly, the SomeType objects referenced by the SOMETHINGS array would also change.

...