JavaでC++のconst
と似た何かを実現する方法はありますか?具体的には、私はjavaのConst関数の引数は?
private static Vector2 sum(Vector2 vec1, Vector2 vec2) {
return vec1.cpy().add(vec2);
}
のような機能を持っていると私は
- にしたい
と - はそうでないことを強制し、それはそれは引数です変更しないことを署名に明確に引数を変更してください(できればコンパイル時ですが、ランタイムアサーションを挿入することもOKです)。
今私は、Javaは厳密に参照渡し(私はちょうど私がコースのit is pass-by-value or rather pass-by-copying-a-referenceを知って、からかってる)であることを知っています。つまり、Javaでは、メソッドを呼び出すと、参照がコピーされますが、その参照は同じオブジェクトの内容を指しています。クラスにパブリックフィールドまたはセッターがある場合、呼び出されたメソッドは、渡されたオブジェクトの内容をいつでも変更できます。例えば何かありますか?これを防ぐには@NotNull
やツールのようなアノテーションを使用しますか?私はちょうど@Contract(pure = true)
のようなJetBrainsアノテーションを見つけましたが、私は彼らが何らかのチェックを提供しているとは思いません。
あなたは 'final'をパラメータに加えることができますが、これは初期化を防ぐだけで、' Vector'の内容を変更するメソッドとセッターを呼び出すことができます。アクセスを制限する必要がある場合は、 'Vector'を隠す不変クラスを作成する必要があります。基本的には、更新を防ぐためのすべてのメソッドを記述します(セッターを隠してゲッターをプリミティブ値に制限します) – AxelH