-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

要件に応じて 1 つの方法:

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 ファイルのみが必要な場合は、内部クラスを削除し、親クラス内にロジックを配置します。

于 2012-04-25T08:29:15.310 に答える
0

2 つのクラスから 1 つのクラス ファイルを取得する方法はありません。それがJavaの仕組みです。

これら 2 つのクラスの内容を 1 つにマージする必要があります。

于 2012-04-25T08:30:23.993 に答える