ホームページ  >  記事  >  Java  >  Java で「非静的フィールド/メソッドへの静的参照を作成できません」というメッセージが表示されるのはなぜですか?

Java で「非静的フィールド/メソッドへの静的参照を作成できません」というメッセージが表示されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 08:07:27435ブラウズ

Why am I getting

Java で「非静的フィールド/メソッドへの静的参照を作成できない」を理解する

Java で「作成できません」というエラーが発生する非静的フィールドへの静的参照」または「非静的メソッドへの静的参照を作成できません」は、コード内の静的要素と非静的要素の間の相互作用により、特定のアクションが制限されていることを示します。

エラーの原因

このエラーは、静的メソッド内など、静的コンテキスト内のインスタンス (非静的) フィールドまたはメソッドにアクセスしようとすると発生します。インスタンス変数はクラスの特定のオブジェクトに関連付けられますが、静的変数とメソッドはクラス自体に属し、オブジェクト インスタンスを必要としません。

解決策: インスタンスを作成する

このエラーを解決するには、インスタンス変数にアクセスしたり、インスタンス メソッドを呼び出したりする前に、クラスのインスタンスを作成する必要があります。これは、インスタンス変数とメソッドに静的コンテキストから直接アクセスできないためです。

たとえば、提供されたコード スニペットでは、静的メソッド main はインスタンス変数 r、cfr、および area にもアクセスしようとします。インスタンスメソッド c_cfr および c_area として。これを修正するには、メイン メソッド内で Cercio クラスのインスタンスを作成し、オブジェクト参照を通じてインスタンス変数とメソッドにアクセスします。

<code class="java">public static void main(String[] args) {
    Cerchio cerchio = new Cerchio();
    cerchio.r = 5;
    cerchio.c_cfr();
    cerchio.c_area();
    System.out.println("The cir is: " + cerchio.cfr);
    System.out.println("The area is: " + cerchio.area);
}</code>

補足

  • インスタンス変数は通常、プライベートとして宣言し、カプセル化のためにゲッター メソッドとセッター メソッドを介してアクセスする必要があります。
  • クラス変数に直接アクセスすることは避けてください。代わりに、クラス定数または静的メソッドを使用してアクセスしてください。
  • 適切なインデントとコード構成により、可読性が向上し、今後そのようなエラーを防ぐことができます。

以上がJava で「非静的フィールド/メソッドへの静的参照を作成できません」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。