-1

我有以下代码:

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像这样制作静态:static class dbConnect它工作正常,但java正在生成一个额外的.class文件:My_program$dbConnect.class不想要

那么我怎样才能拥有一个.class文件并让代码工作。

4

4 回答 4

3

根据您的要求的一种方法:

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)
}

}

于 2012-04-25T08:29:22.383 回答
0
My_program$dbConnect.class 

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

outerclass$innerclass.class
于 2012-04-25T08:27:09.727 回答
0

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

注意:第一次编译失败,这就是它没有生成 Parent$dbconnect.class 文件的原因

如果您只需要 1 个 .class 文件,则删除内部类并将逻辑放在您的 Parent 类中。

于 2012-04-25T08:29:15.310 回答
0

你不可能从两个类中得到一个类文件。这就是 Java 的工作原理。

您需要将这两个类的内容合并为一个。

于 2012-04-25T08:30:23.993 回答