从 java 中的主要 class 访问静态内部 classes 中的静态方法后,eclipse 发出警告
After accessing static methods in static inner classes from main class in java, eclipse is giving warning
我有一个class -->
public class Machine
在那里我声明了一个静态内部 class -->
public static class Parts
inside static inner class 我声明了两个静态方法 -->
public static void engine()
public static void battery()
现在我想从我的 class 主应用程序访问这些方法。我正在使用 Eclipse IDE。我做到了 -
Machine.Parts machine = new Machine.Parts();
machine.engine();
machine.battery();
Eclipse 让我去做。但它给了我警告 -
Machine.Parts 类型的静态方法引擎应该以静态方式访问
Machine.Parts 类型的静态方法引擎应该以静态方式访问
如何解决这个问题?
我试过 google 搜索和堆栈溢出以前的问题。但无处可寻。
我的代码-
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();
您正在创建该内部 class 的 实例 。然后你去:
machine.engine();
...调用 static 方法,就好像它是那个 class 的非静态方法一样。
是的,上面的代码有效,但这是不好的做法。如果您打算使用 "real" 非静态方法,只需从方法签名中删除该关键字即可。否则,将您的代码更改为:
Machine.Parts.engine();
因为那是 真正 在您的代码示例中发生的事情。
我有一个class -->
public class Machine
在那里我声明了一个静态内部 class -->
public static class Parts
inside static inner class 我声明了两个静态方法 -->
public static void engine()
public static void battery()
现在我想从我的 class 主应用程序访问这些方法。我正在使用 Eclipse IDE。我做到了 -
Machine.Parts machine = new Machine.Parts();
machine.engine();
machine.battery();
Eclipse 让我去做。但它给了我警告 -
Machine.Parts 类型的静态方法引擎应该以静态方式访问
Machine.Parts 类型的静态方法引擎应该以静态方式访问
如何解决这个问题?
我试过 google 搜索和堆栈溢出以前的问题。但无处可寻。
我的代码-
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();
您正在创建该内部 class 的 实例 。然后你去:
machine.engine();
...调用 static 方法,就好像它是那个 class 的非静态方法一样。
是的,上面的代码有效,但这是不好的做法。如果您打算使用 "real" 非静态方法,只需从方法签名中删除该关键字即可。否则,将您的代码更改为:
Machine.Parts.engine();
因为那是 真正 在您的代码示例中发生的事情。