我研究了这个问题,但似乎仍然无法解决这个问题。我的程序中有以下内容:
public void InsertDB(double price, double shares, String ticker, int id)throws Exception {
//do some stuff
}
我在我的主类中尝试了以下操作(并收到上述错误非静态方法无法在静态上下文中引用):
InsertDB(constants[i], variables[i], ticker[i], count);
然后我读到您必须创建一个新实例,所以我尝试了(Testingground 是我的程序的名称),但收到一条错误消息,指出它找不到 InsertDB 符号:
Testingground myObject = new InsertDB();
我是java新手,有点继承了这个程序(我的程序没有遇到这个问题),有人可以告诉我我能做些什么来让它工作以及它背后的逻辑吗?(我的insertdb如果我将它转换为静态,类会给我错误,这样该方法将不起作用)。我还读到,如果我将 public
更改为 protected
,它可能会起作用,但它仍然不起作用。
提前致谢
最佳答案
您需要实例化类本身,而不是方法 InsertDB()
。您可以使用关键字new
实例化一个类。可以引用oracle/sun上的官方教程docs .
示例:
Testingground myObject = new Testingground();
myObject.InsertDB(constants[i], variables[i], ticker[i], count);
方法也可以声明为静态
。在这种情况下,您可以直接引用它们,即。 Testingground.InsertDB(constants[i], Variables[i],ticker[i], count);
无需为该类构造对象。
按照惯例,方法名称也采用驼峰命名法。阅读有关 java 中命名约定的更多信息 here .
关于java - 非静态方法不能在静态上下文中引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270690/