静态方法中不能引用非静态方法

Los*_*oul 0 java

我研究了这个,似乎仍然无法解决这个问题.我的程序中有以下内容:

   public void InsertDB(double price, double shares, String ticker, int id)throws Exception {
   //do some stuff
   }
Run Code Online (Sandbox Code Playgroud)

我在我的主类中尝试了以下内容(并且在静态上下文中无法引用上面的错误非静态方法):

InsertDB(constants[i], variables[i], ticker[i], count);
Run Code Online (Sandbox Code Playgroud)

然后我读到你必须创建一个新实例,所以我尝试(Testingground是我的程序的名称),我得到一个错误,说它找不到InsertDB符号:

Testingground myObject = new InsertDB();
Run Code Online (Sandbox Code Playgroud)

我是java新手并继承了这个程序(我的程序没有遇到过这个问题),有人可以告诉我我能做些什么才能让它工作以及它背后的逻辑?(我的insertdb类给了我错误,如果我把它变成静态,这样方法将无法正常工作).我还读到如果我改变它可能会工作public,protected但它仍然无效.

提前致谢

Coo*_*ans 5

您需要实例化类本身,而不是方法InsertDB().您可以使用关键字实例化一个类new.您可以参考oracle/sun 文档上的官方教程.

例:

Testingground myObject = new Testingground();
myObject.InsertDB(constants[i], variables[i], ticker[i], count);
Run Code Online (Sandbox Code Playgroud)

方法也可以声明为static.在这种情况下,您可以直接引用它们,即.Testingground.InsertDB(constants[i], variables[i], ticker[i], count);没有构造该类的对象.

同样按照惯例,方法名称是驼峰式的.在此处阅读有关Java命名约定的更多信息.