、finalキーワード
1.1定義
最後のキーワードがもはや発生している変化量を変更するために使用され、クラス、属性、メソッド、ローカル変数を変更するために使用することができます。
1.2
変更されたクラス:最終修正クラスは、クラスを拡張するクラスに来て、非常に完璧な非常に困難であったことを示す、クラスを継承することはできません表します。
代表的なアプリケーション:文字列、StringBufferの、システム
属性の変更:最終変更した属性は、属性は、それが初期化されると、初期化が完了する前に、オブジェクトのプロパティの最終的な修飾は、ディスプレイの位置を初期化初期化することができ、初期化コードブロック、コンストラクタの初期化を完了するように変更されないことを示し
例:
class Person {
final int age = 10; //显示初始化
final String name;
final String sex;
{
name = "xiao ming"; //代码块初始化
}
public Person() {
sex = "男"; //构造变量初始化
}
}
修正方法:この方法は、一般的な使用はgetClass Objectクラス()メソッドと、サブクラスによってオーバーライドすることができないことを最終的な修正方法を示しています。
修飾されたローカル変数:基本データ型、および参照データ型を修正することができる、データ・タイプは、修飾された基準値で表され、それはアドレス値、すなわち、ポイントを変更することができない変数の修正された参照データ型を変更することができません。
第二に、ドメインセキュリティのセット
2.1定義
コレクションの不変の要素を確認し、地域の安全保障です。
変数の最終修正参照データ型を言及したの上述したしかし、我々は配列を使用し、それは同じ配列に適用される新しいオブジェクトへのポイントではないことを示し、あなたは念配列への参照を変更することがないようにしたいないかもしれませんが、また、この最後のではなく、配列の内容を変更する必要はありません。
例:
public class FinalTest {
private static void output(final List<Integer> arrayList) {
for(int i = 0; i < arrayList.size(); i++) {
System.out.print(arrayList.get(i) + " ");
arrayList.set(i, arrayList.get(i) + 1); //对 arrayList 中的元素更改
}
}
public static void main(String[] args) {
final List<Integer> arrayList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); //定义 final 类型的 List
output(arrayList);
System.out.println();
output(arrayList);
}
}
/*结果:
1 2 3 4 5
2 3 4 5 6
*/
2.2
セキュリティドメインを確保するために、C言語で使用することができますconstキーワードでJava、コレクションのパッケージに不変クラスを使用する必要があります。
public static void main(String[] args) {
final List<Integer> arrayList = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)));
output(arrayList);
System.out.println();
output(arrayList);
}
/*结果:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableList.set(Collections.java:1311)
at static_final.FinalTest.output(FinalTest.java:9)
at static_final.FinalTest.main(FinalTest.java:15)
*/