【发布时间】:2020-01-25 16:23:40
【问题描述】:
我有课-->
public class Machine
我已经声明了一个静态内部类 -->
public static class Parts
在静态内部类中我声明了两个静态方法 -->
public static void engine()
public static void battery()
现在我想从我的主类 App 中访问方法。我正在使用 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");
}
}
}
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.engine()(您直接在类上调用该方法,而不是在类的实例上)。 -
首先,警告不是错误。其次:阅读警告。如果您知道“静态”的含义,那么您应该清楚该警告的含义
-
静态方法不需要实例化新对象。所以调用
Machine.Parts.engine()将是访问它们的正常方式,尽管不是必需的。该警告只是为了让您检查您的设计,因为您当前正在以“非标准”方式使用您的代码。
标签: java eclipse methods inner-classes static-classes