Javaでメインクラスから静的な内部クラスの静的メソッドにアクセスした後、日食は警告を与えています

acidic_base:

私はクラスを持っています - >

    public class Machine

そこで私は、静的な内部クラスを宣言しています - >

   public static class Parts

静的な内部クラスの中に、私は2つの静的メソッドを宣言しています - >

    public static void engine()
    public static void battery()

今、私は私のメインクラスのアプリケーションからメソッドにアクセスしたいです。私は、Eclipse IDEを使用しています。やった -

    Machine.Parts machine = new Machine.Parts();
    machine.engine();
    machine.battery();

Eclipseはそれを行うために私をさせて頂いております。-しかし、私が警告与えている
タイプMachine.Partsから静的メソッドエンジンを静的な方法でアクセスする必要がある
タイプMachine.Partsから静的メソッドエンジンは、静的な方法でアクセスする必要がある

。この問題を解決する方法は?

私は、以前の質問オーバーフローGoogle検索とスタックを試してみました。しかし、どこにも、私は解決策を見つけることができませんでした。

私のコード-

Machine.java - >

package demo28;

public class Machine {

    public static class Parts {
        public static void engine() {
            System.out.println("Machine engine is running");
        }
        public static void battery() {
            System.out.println("Machine battery is charging");
        }
    }
}

App.java - >

package demo28;

public class App {

    public static void main(String[] args) {
        run(new Machine.Parts());
    }

    public static void run(Machine.Parts machine) {
        machine.engine();
        machine.battery();
        System.out.println();
    }

}

出力- >

マシンのエンジンが稼働している
マシンのバッテリーが充電されます

期待- >いいえ警告

実- >警告の取得

GhostCat敬礼モニカC.:

ここに:

 Machine.Parts machine = new Machine.Parts();

あなたは、作成している場合、その内部クラスのを。次に、あなたが行きます:

 machine.engine();

...呼び出す静的それはそのクラスの非静的メソッドであるかのように、方法を。

はい、上記のコードは動作しますが、それは悪い習慣です。あなたは「本当の」非静的メソッドを持っていることを意図した場合、単純にメソッドのシグネチャからそのキーワードをドロップします。そうでなければ、あなたのコードを次のように変更します

Machine.Parts.engine();

それが何をしているため、実際にあなたのコードの例で起こります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=330431&siteId=1