我有一个类-->

    public class Machine

在那里,我已经声明了一个静态内部类-->

   public static class Parts

内部静态内部类我已经宣布了两个静态方法-->

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

现在,我想从我的主类应用程序访问的方法。我使用Eclipse IDE. I没有 -

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

Eclipse是让我去做。但它给我的警告 -
从类型Machine.Parts静态方法引擎应该以静态方式进行访问
从类型Machine.Parts静态方法引擎应该以静态方式进行访问

如何解决这个问题呢?

我曾尝试谷歌搜索,堆栈溢出以前的问题。但无处我能找到解决方案。

我的代码 -

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();
    }

}

输出-->

机发动机运转
    机电池正在充电

预计-->无警告

实际-->交通警示

分析解答

这里:

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

您正在创建内部类的一个实例。然后你去:

 machine.engine();

...调用静态方法,就好像它是该类的non-static方法。

是的,上面的代码工作,但它是不好的做法。如果你的意思是有"real" non-static方法,只需在方法签名丢弃关键字。否则,更改您的代码:

Machine.Parts.engine();

因为这是真正发生在你的代码示例。