[解決済み] Java内部クラスと静的ネストされたクラス
2022-03-16 17:01:15
質問
Javaにおけるinner classとstatic nested classの主な違いは何ですか?どちらを選択するかは、設計と実装が関係しますか?
どのように解決するのですか?
からの Javaチュートリアル :
ネストされたクラスは、静的と非静的の2種類に分けられます。静的と宣言されたネストされたクラスは、単に静的ネストされたクラスと呼ばれます。非静的なネストされたクラスは、インナークラスと呼ばれます。
静的なネストされたクラスは、囲んだクラス名を使用してアクセスされます。
OuterClass.StaticNestedClass
たとえば、静的なネストされたクラスのオブジェクトを作成するには、次の構文を使用します。
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
内部クラスのインスタンスであるオブジェクトは、外部クラスのインスタンスの中に存在します。次のようなクラスを考えてみましょう。
class OuterClass {
...
class InnerClass {
...
}
}
InnerClassのインスタンスはOuterClassのインスタンス内にのみ存在でき、その包含するインスタンスのメソッドとフィールドに直接アクセスできます。
内部クラスをインスタンス化するには、まず外部クラスをインスタンス化する必要があります。次に、この構文で外部オブジェクトの中に内部オブジェクトを作成します。
OuterClass outerObject = new OuterClass()
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
をご覧ください。 Javaチュートリアル - ネストされたクラス
完全を期すために、このようなものがあることに注意してください。 インナークラス がない場合 を包含するインスタンス :
class A {
int t() { return 1; }
static A a = new A() { int t() { return 2; } };
}
ここです。
new A() { ... }
は
静的コンテキストで定義された内部クラス
であり、包含するインスタンスを持っていない。
関連
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Javaでネストされたループから抜け出すには?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] Javaにおける静的クラス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java の例外が発生しました java
-
ファインバグタイプ
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決
-
[解決済み] Javaです。静的クラスと内部クラス [重複] の比較