静的メンバーのみを持つクラスは不変ですか?それとも不変に近い?静的メンバーのみを持つクラスは不変ですか?
0
A
答えて
1
Techinically、はい。
は、あなたがこのクラスを持っていると言う:不変オブジェクトのコンストラクタは、インスタンスを変更することができない実行を完了することを意味します。
public class MyClass {
public static int a = 0;
}
あなたは、このクラスのインスタンスを作成するときの値を変更するには、変更することは何もありませんので、あなたは、それを「変更」することはできません!非静的メンバーはありません!
だから、そのようなクラスは不変です。
1
フィールドがすべてfinal
で、プリミティブまたは不変の場合は、不変のクラスがあります。注:フィールドを最終的にするだけでは、それを不変にすることはできません。
// not immutable!
private static final Set<String> words = new HashSet<>();
public static void addWord(String word) { words.add(word); }
注:不変の場合のこのルールの例外の1つは、リフレクションまたはネイティブメソッドの使用です。リフレクション/ネイティブメソッドは、最終的な値をオーバーライドしようとする可能性があります。これが使用されている場所の一つは、あなたはSystem.out
は常にnull
であり、あなたはHello Worldのプログラムを書くことはできませんが、ああ、いや、これは何と同様に、ネイティブコードから設定されますと結論づけるかもしれないjava.lang.System
public final static PrintStream out = null;
でありますこの方法は、そう実際には、System.out
は、起動時にJVMによって
public static void setOut(PrintStream out) {
checkIO();
setOut0(out);
}
private static native void setOut0(PrintStream out);
リセットされますんん、あなたは何よりも近いSystem.setOut
関連する問題
- 1. 内部状態の静的メンバーのみを持つクラス
- 2. 新しい演算子を持つクラスの静的メンバー変数
- 3. なぜ静的クラスは静的メンバーのみを持つことができますか?
- 4. 静的メソッドのみを持つクラスは静的であるべきですか?
- 5. 2つのクラスの非静的メンバーへの不正な参照
- 6. Javaは、私はいくつかの静的メンバーと静的クラスを持つすべてのインスタンスのリスト
- 7. 独自の型の静的メンバーを持つクラス
- 8. TypeScript静的メンバーとクラス名を持つ名前空間
- 9. PHPクラスの静的メンバー状態を維持する方法は?
- 10. 静的メソッドのみを持つクラス - 列挙型かどうか
- 11. jsが、私は、静的メソッドを持つクラスを持つクラス
- 12. 派生クラスの静的メンバー値からのPython静的メンバー初期化
- 13. クラスはなぜ静的メンバーを持つことが許されますが、非静的メンバーは持てませんか?
- 14. インスタンスのみを持つクラスの静的メソッドを呼び出す
- 15. 静的メンバーを持つクラスのコンストラクタはC++でいつ実行されますか?
- 16. メンバー関数内で静的変数を作成できますか?そのクラスのインスタンス内では静的変数のみが使用できますか?
- 17. 非静的メンバーの静的メンバー関数
- 18. 静的メンバーを持つクラスと型スクリプトの名前空間/モジュールの違い
- 19. C++の静的メソッドのみを持つクラスの利点
- 20. QtのQIconのインスタンスを自分のクラスの静的メンバーとして持つことは可能ですか?
- 21. 動的に見つかったクラスの静的メンバーを設定する
- 22. 静的ライブラリの静的メンバー
- 23. C++:静的メンバー変数
- 24. テンプレートクラスの静的メンバー変数をクラスの静的メンバー変数として宣言/定義/初期化するにはどうすればよいですか?
- 25. 静的クラスを持つビューに動的クラスを追加する
- 26. 静的メソッドから非静的メンバー変数へのアクセス
- 27. C99の静的変数を持つ初期静的変数
- 28. 静的ポインタを持つC++クラス
- 29. 静的メソッドを持つクラスまたは通常のメソッドを持つクラス
- 30. 初期値を持つクラスのインスタンスを持つ静的arraylist
を使用して、それをリセットすることができますか? – Bathsheba
静的ではなく最終的な意味ですか? – Cr4xy
@Bathsheba:クラスは不変になります – snjynegi