finalキーワードがメソッドパラメータで使用される場合、キーワードが本当に便利な場所を理解できません。 匿名クラス、読みやすさ、意図宣言の使用を除外すると、私にはほとんど価値がないように見えます。 一部のデータを一定に保つことは、見かけほど強力ではありません。 パラメータがプリミティブの場合、パラメータは値としてメソッドに渡され、変更してもスコープ外では効果がないため、効果はありません。 パラメータを参照渡しする場合、参照自体はローカル変数であり、参照がメソッド内から変更された場合、メソッドスコープの外部からの影響はありません。 以下の簡単なテストの例を考えてみましょう。このテストはパスしますが、メソッドは与えられた参照の値を変更しましたが、効果はありません。 public void testNullify() { Collection<Integer> c = new ArrayList<Integer>(); nullify(c); assertNotNull(c); final Collection<Integer> c1 = c; assertTrue(c1.equals(c)); change(c); assertTrue(c1.equals(c)); } private void change(Collection<Integer> c) { c = new ArrayList<Integer>(); } public void nullify(Collection<?> t) { t = null; }
C ++プログラミングは初めてですが、Javaの経験があります。C ++で関数にオブジェクトを渡す方法に関するガイダンスが必要です。 ポインター、参照、または非ポインターと非参照の値を渡す必要がありますか?オブジェクトへの参照を保持する変数のみを渡すため、Javaではそのような問題はありません。 これらの各オプションをどこで使用するかについても説明していただければ幸いです。