为什么需要java静态方法

为什么需要java静态方法,java,static-methods,Java,Static Methods,我使用eclipse作为java的IDE 我编写了以下代码,但在loadStrade()上有一个错误。Eclipse建议我将loadStrade从public void更改为public static,我不明白为什么? 我寻找过类似的问题,也发现了一些类似的问题,但我仍然不明白为什么我必须将方法更改为静态。Uffa 在代码中,RouteNet是一个图形(jgraphT),loadStrade()用于填充顶点和边。 我能帮忙吗。谢谢,法布里齐奥 public class GestioneStrad

我使用eclipse作为java的IDE
我编写了以下代码,但在
loadStrade()
上有一个错误。Eclipse建议我将
loadStrade
public void
更改为
public static
,我不明白为什么?
我寻找过类似的问题,也发现了一些类似的问题,但我仍然不明白为什么我必须将方法更改为静态。Uffa

在代码中,RouteNet是一个图形(jgraphT),loadStrade()用于填充顶点和边。
我能帮忙吗。谢谢,法布里齐奥

public class GestioneStrade {

private Stradario routesNet;

public static void main(String[] args) {

    /*
     * Instantiate Stradario and fill it with routes and cross
     * 
     */
    GestioneStrade m = new GestioneStrade(); //istance of gestionestrade ok?
    // now I set new routesNet
    m.setRoutesNet(new Stradario());

    loadStrade(m.getRoutesNet());  // why loadStrade must be static :-(

}

public Stradario getRoutesNet() {
    return routesNet;
}

public void setRoutesNet(Stradario routesNet) {
    this.routesNet = routesNet;
}

public void loadStrade(Stradario str) {
    // some code to fill routesNet

}
在“main”中,您应该替换

loadStrade(m.getRoutesNet());


并将loadStrade保留为非静态。

您正在从静态上下文调用该方法(静态方法
main
)。使方法
成为静态的
,或者对
GestioneStrade
的实例调用该方法,例如
m.loadStrade(m.getRoutesNet())
这个类是嵌套的类吗?注意:它并没有告诉您将
公共无效
更改为
公共静态
,而是更改为
公共静态无效
:您仍然需要一个返回类型。请参见。您的方法是否包含在类中?或者(/和)更改
loadStrade
,以便它根本不接受参数,让它调用自己的
getRoutesNet()
方法。非常感谢你,现在我明白了。作为一名java初学者,像这样的问题需要花费我很多时间才能解决。
m.loadStrade(m.getRoutesNet());