Globalな変数はどこからでも参照できるため、不変性が破壊される原因になりがちである。この問題を回避するにはGlobalな変数自体を不変オブジェクト化しておけばよい。さて、javaのGlobalな変数とはclass staticな変数のことなのだろうか、それともclass自体のことなのだろうか。
バイトコードによって永続化されるオブジェクトをパスによって参照しているとみなせば、class自体が変数だと扱ってもよいだろう。ただし、classは通常の変数と異なる名前空間に属し、アクセス手法も異なる*1という点が厄介であるかもしれない。