当前位置: 首页 > 知识库问答 >
问题:

静态上下文中的Java非静态变量

孟承嗣
2023-03-14

我有以下代码:

public class My_program {

    class dbConnect {
       public dbConnect();
       public void connect_to_db(String connect_string) {
          Class.forName(...);
          ...
       }
    }

    public static void main(String[] args) {
       String connect_string = "jdbc...";
       dbConnect db = new dbConnect();
       db.connect_to_db(connect_string)
    }
}

当我尝试编译它时,会出现以下错误:

error: non-static variable this cannot be referenced from a static context

因此,我尝试使dbConnect静态如下:静态类dbConnect,它工作正常,但java正在生成额外的。class文件:我的\u程序$dbConnect。我不想要的类。

那么如何才能拥有一个. class文件并让代码正常工作。


共有3个答案

戈安翔
2023-03-14

你不能,额外的。将生成类文件。在java中,每个类在编译成字节码时都会生成一个。类文件。因此,dbConnect类将生成一个。类文件。

注意:第一次编译失败,这就是为什么它没有生成父$dbconnect。类文件

如果你只想要1个。类文件,然后删除内部类并将逻辑放入父类中。

高墨一
2023-03-14
My_program$dbConnect.class 

这是内部类的类文件。如果您在编译后创建内部类,您将获得一个类文件作为

outerclass$innerclass.class
司马念
2023-03-14

一种方式取决于您的要求:

public class My_program {

My_program() { }


public void connect_to_db(String connect_string) {
      Class.forName(...);
      ......
   }

public static void main(String[] args) {
   String connect_string = "jdbc......";
   My_program db = new My_program();
   db.connect_to_db(connect_string)
}

}

 类似资料:
  • 我在阅读Kathy and Bert SCJP1.6时遇到了以下代码: 虽然是在跟踪变量的主题下,但我无法理解如何在main()方法(static)中引用非静态变量myBar?

  • 我尝试使用网络豆IDE在java中创建一个简单的类。每当我试图执行这个命令时,它都会发出这样的警告。从静态上下文引用的非静态变量“。谁能告诉我为什么会发生这种情况以及如何解决它。提前感恩节。

  • 问题内容: 我是Java新手,我正在尝试通过递归函数部署斐波那契跟踪,然后计算运行时间。这是我设法编写的代码: 问题是,当我尝试将其转换为字节码时,出现以下错误: 我想知道是什么问题?! 问题答案: 更改 至 并使该方法静态。 或者,改变 至

  • 错误来自此行板状态 addme = 新板状态(); 由于某种原因,它所指向的非静态变量是“新”的。我不清楚如何修复这个错误,因为new不应该是一个变量,也不是。 查看stackoverflow记录,该错误通常来自非静态方法,通常通过将该方法设为静态或完全绕过该方法来解决。T 下面的代码是为了引用这个语句前后发生的事情。 }……

  • 问题内容: 在UNI atm上做Java课程,我遇到了骰子问题。 我有以下内容: 编译时,我得到:无法从静态上下文引用非静态变量n。我如何解决这个问题,同时让它从用户给定的值中随机化? 问题答案: 不是静态变量,因此您不能以静态方式()引用它。 由于它是类中的实例变量,并且您正在类中引用它,因此可以使用代替。

  • 我是Android编码的n00b,今天我想尝试使用定位服务。 我设置了一个简单的类和一个简单的main,只是为了得到经度和纬度。 但当我尝试调用retrive的构造时,long and latitude Android Studio弹出了一个错误: 错误:(33,16)错误:无法从静态上下文引用非静态变量纬度 这是我的位置班