[解決済み] なぜ、(非)静的なインナークラスで静的なメソッドを持つことができないのでしょうか(Java 16以前)?
2022-05-14 07:30:30
質問
なぜ非静的な内部クラスで静的なメソッドを持つことができないのでしょうか?
public class Foo {
class Bar {
static void method() {} // Compiler error
}
}
内側のクラスをstaticにすると動作します。なぜでしょうか?
public class Foo {
static class Bar { // now static
static void method() {}
}
}
Java 16+では、この両方が有効です。
どのように解決するのですか?
内部クラスのインスタンスは、暗黙のうちに外部クラスのインスタンスと関連付けられているため、それ自身はいかなる静的メソッドも定義することができません。 静的ネストされたクラスは、その外側のクラスで定義されたインスタンス変数やメソッドを直接参照することができず、オブジェクト参照を通じてのみ使用することができるので、静的ネストされたクラスで静的メソッドを宣言することは安全です。
関連
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
[解決済み] Javaでネストされたループから抜け出すには?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] なぜJavaのVector(およびStack)クラスは時代遅れ、または非推奨とされているのですか?
-
[解決済み] 静的変数が悪とされるのはなぜですか?
-
[解決済み] なぜJavaでは静的メソッドを抽象化できないのですか?
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
-
[解決済み】静的定数文字列(クラスメンバ)
-
[解決済み] Javaで静的メソッドからgetClass()を呼び出す方法は?
最新
-
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.util.NoSuchElementException
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
JSPで「リストが型解決できない!」の解決方法
-
Java(1)仕上げの基本概念+eclipseのインストール構成