从java中的主类访问静态内部类中的静态方法后,eclipse给出警告

我有一堂课-->


    public class Machine

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


   public static class Parts

在静态内部类中我声明了两个静态方法 -->


    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 的静态方法引擎应该以静态方式访问


如何解决这个问题?


我已经尝试过谷歌搜索和堆栈溢出之前的问题。但我无处能找到解决方案。


我的代码 -


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");

        }

    }

}

应用程序.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();

    }


}

输出 -->


机器发动机正在运行

机器电池正在充电


预期 --> 无警告


实际 --> 收到警告


牛魔王的故事
浏览 126回答 1
1回答

牧羊人nacy

这里: Machine.Parts machine = new Machine.Parts();您正在创建该内部类的实例。然后你就去: machine.engine();...调用静态方法,就好像它是该类的非静态方法一样。是的,上面的代码可以工作,但这是不好的做法。如果您打算拥有“真正的”非静态方法,只需从方法签名中删除该关键字即可。否则,将代码更改为:Machine.Parts.engine();因为这就是您的代码示例中真正发生的情况。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java