gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:19 26 4
gpt4 key购买 nike

我有课-->

    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 类型的静态方法引擎应该以静态方式访问

如何解决这个问题?

我已经尝试过谷歌搜索和堆栈溢出以前的问题。但我无处可寻。

我的代码-

机器.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();

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

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

Machine.Parts.engine();

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

关于java - 从java中的主类访问静态内部类中的静态方法后,eclipse发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58099022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com