1

私のプロジェクトにはいくつかのクラスがあります。コンパイル後、name.class と name$.class の 2 つの Java ファイルをクラスごとに見つけました。その理由は何ですか?クラスについて特別なことは何も見ていません。

ご挨拶

4

4 に答える 4

7

例のように、匿名の内部クラスです。

new Runnable() { ... }

編集:コメントからのいくつかの有効なポイント:

  • enum型も別のクラス ファイルにコンパイルされます (これらは実際にはクラスであるため)。
  • 匿名の内部クラスには連続番号が付けられます ( MyClass$1.classMyClass$2.classなど)。
  • 匿名の内部クラスには名前が付けられます (例: MyClass$InnerNamedClass.class)
于 2013-03-27T22:40:01.610 に答える
2

パブリック クラスに内部クラス (匿名または名前付き) があります。この動作は正常です。Java コンパイラは、ソース ファイルで定義されているクラスの数に関係なく、クラスごとに 1 つの .class ファイルを生成します。

于 2013-03-27T22:40:43.930 に答える
0

Java コンパイルは、.java ファイルで定義されたすべてのクラスに対して .class ファイルを作成します。次のような匿名の内部クラスが必要です。

button.addListener(new PressListener() {
    public void onPressed(Event event) {
        System.out.print("test");
    }
});
于 2013-03-27T22:40:46.740 に答える
0

Java の内部クラスは にコンパイルされClass$InnerClassます。

クラスに名前を付けた場合は、クラスの名前が使用されます。クラスが匿名の場合、つまり次のようなものがあります。

final ActionListener actionListener = new ActionListener() {

    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
};

次に数字が使用されるので、これは になりますClass$1

于 2013-03-27T22:42:34.380 に答える