java - 非静态方法不能在静态上下文中引用

标签 java

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

   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/

相关文章:

java - 简单的 JUnit 测试 assertTrue(true) 失败

java - 如何在 OpenCV java 中将 Mat 转换为整数数组?

java - g.drawImage() 只渲染 JPanel 上可见的图像部分,还是 "keep in mind"图像的其余部分?

java - 双链表的反向追踪功能出现问题

java - 包本地类的 Class literal 和 Class.forName 的不同行为

java - Traceview 显示某些方法在 200 毫秒或更长时间内没有被调用

java - Java 中的量词 {n} 接受 n+1 个输入

java - 如何在执行junit时自动生成时序图

java - 移动了 lwjgl 渲染中的渲染器

java - bin目录下的java.exe是做什么的?