为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

牛魔王的故事 2023-08-23 17:17:08
我有一堂课-->    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();    }}输出 -->机器发动机正在运行机器电池正在充电预期 --> 无警告实际 --> 收到警告
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

这里:

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

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

 machine.engine();

...调用静态方法,就好像它是该类的非静态方法一样。

是的,上面的代码可以工作,但这是不好的做法。如果您打算拥有“真正的”非静态方法,只需从方法签名中删除该关键字即可。否则,将代码更改为:

Machine.Parts.engine();

因为这就是您的代码示例中真正发生的情况。


查看完整回答
反对 回复 2023-08-23
  • 1 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信