pmem / pcj

Persistent Collections for Java

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mutable classes should not inherit from Immutable ones

punkstarman opened this issue · comments

A mutable class that inherits from an immutable one does not respect the Liskov Substitution Principle, a.k.a. the L in SOLID. An immutable object and its responses to getters can be cached indefinitely whereas a mutable object does not allow this.

For example, AbstractPersistentArray inherits from AbstractPersistentImmutableArray, adding setters that render what should be immutable, per the contract of AbstractPersistentImmutableArray.

This may just be a naming issue. If a suitable replacement for the term Immutable were found that doesn't imply a specific contract, for instance Readable.