我有一个类-->
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();
因为这是真正发生在你的代码示例。