Java では、"final" キーワードは不変の値を持つ変数を宣言するために使用されます。ただし、最終変数に割り当てられたオブジェクトを変更できるシナリオが発生する可能性があります。この動作には、final の機能をより深く理解する必要があります。
インスタンス変数:
静的変数:
次のコードを考えてみましょう:
import java.util.ArrayList; import java.util.List; class Test { private final List foo; public Test() { foo = new ArrayList(); foo.add("foo"); // Modification-1 } public static void main(String[] args) { Test t = new Test(); t.foo.add("bar"); // Modification-2 System.out.println("print - " + t.foo); } }
Java 1.8 では、「実質的に最終的な」変数の概念が導入されました。これらは、ネストされたクラスまたは匿名内部クラス内で事実上不変であるローカル変数です。 「final」キーワードを使用していませんが、再割り当てはできません。
以上がJava の「final」キーワードはオブジェクトの変更にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。