我有一堂课--> 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();
因为这就是您的代码示例中真正发生的情况。
添加回答
举报
0/150
提交
取消