Java で「非静的フィールドへの静的参照を作成できません」および「非静的メソッドへの静的参照を作成できません」というエラーが発生するのはなぜですか?

Linda Hamilton
リリース: 2024-11-03 00:32:02
オリジナル
327 人が閲覧しました

Why Do I Get

JAVA: 「非静的フィールドへの静的参照を作成できません」エラーと「非静的メソッドへの静的参照を作成できません」エラーについて

静的と非静的

静的なフィールドとメソッドは、クラス自体に関連付けられています。クラスの特定のオブジェクトよりも。オブジェクトを作成しなくても、クラス名を使用して直接アクセスできます。対照的に、非静的フィールドとメソッドはインスタンス固有であり、使用するクラスのオブジェクトが必要です。

「非静的フィールド/メソッドへの静的参照を作成できません」エラー

このエラーは、静的メソッドやクラス宣言自体など、静的コンテキスト内から非静的フィールドまたはメソッドにアクセスしようとすると発生します。このエラーを解決するには、フィールドまたはメソッドを静的として宣言するか、クラスのインスタンスを作成し、オブジェクト インスタンスを通じて非静的メンバーにアクセスします。

指定したコード例では次のようになります。

<code class="java">public class Cerchio {
    float r; // non-static field
    float area; // non-static field
    float cfr; // non-static field
    
    public static void main(String[] args) {
        r = 5; // Error: Cannot access non-static field 'r' from static method 'main'
        // ...
    }
}</code>
ログイン後にコピー
静的メイン メソッドから非静的フィールド r に直接アクセスしようとしたため、エラーが発生しました。正しいアプローチは、以下に示すように、Cerchio クラスのインスタンスを作成し、オブジェクトを通じて r にアクセスすることです。

<code class="java">public class Cerchio {
    float r; // non-static field
    float area; // non-static field
    float cfr; // non-static field
    
    public static void main(String[] args) {
        Cerchio cerchio = new Cerchio();
        cerchio.r = 5; // OK: Accessing non-static field through an object
        // ...
    }
}</code>
ログイン後にコピー
これらのルールに従うことで、「非静的参照を作成できない」問題を回避できます。静的フィールド/メソッド」エラーを回避し、よりクリーンで堅牢な Java コードを作成します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート