我有以下代码:
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
I不想。
那么我怎样才能拥有一个.class
文件并让代码生效。
答案 0 :(得分: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)
}
}
答案 1 :(得分:0)
My_program$dbConnect.class
这是内部类的类文件。 如果在编译后创建内部类,则会得到一个类文件
outerclass$innerclass.class
答案 2 :(得分:0)
你不能,会生成额外的.class文件。在java中,每个类在编译成字节代码时都会生成一个.class文件。所以你的dbConnect类将生成一个.class文件。
注意:第一次编译失败,这就是为什么它没有生成Parent $ dbconnect.class文件
如果你只想要1个.class文件,那么删除内部类并将逻辑放在你的父类中。
答案 3 :(得分:0)
你无法从两个类中获得一个类文件。这就是Java的工作原理。
您需要将这两个类的内容合并为一个。