本物のオブジェクト指向言語は、型の変更不能性をインターフェイスで表明する。

public void change(Object argObject) { /* ... */ }
public void unchange(ConstObject argConstObject) { /* ... */ }

さらに、引数への代入をコンパイルエラーとして報告してもらいたければ、

public void unchange(final ConstObject argConstObject) { /* ... */ }

を使う。