java コンパイラが単一の java ファイルに対して複数の .class ファイルを生成するのはなぜですか?
私はいくつかの Java コード Deadlock.java を作成しました。これをコンパイルすると、 Deadlock$someNumber.class という名前の複数のクラスが生成されました。
なぜこれが起こるのですか.??
それの意義は何ですか??
java コンパイラが単一の java ファイルに対して複数の .class ファイルを生成するのはなぜですか?
私はいくつかの Java コード Deadlock.java を作成しました。これをコンパイルすると、 Deadlock$someNumber.class という名前の複数のクラスが生成されました。
なぜこれが起こるのですか.??
それの意義は何ですか??
同じファイルに複数のクラスがある場合 (そのうちの 1 つは public である必要があり、ファイルと同じ名前を持っています)、Person.java ファイルに次のようなものがあるとします。
public class Person{
}
class Classroom{
}
コンパイラは、ファイル Person.java 内のクラスごとにクラスを作成します。
これらは匿名クラスです。コードにはnew SomeInterface(){}
and/orのようなものが含まれていnew SomeClass(){}
ます。
匿名の内部クラスを使用すると、通常はそうなると思います。これらのクラスはそれぞれクラスファイルを取得しますが、名前を宣言していないため、番号を取得します。したがって、作成した名前のないクラス宣言 (おそらく Runnable や Listeners など) は、おそらくそれらを作成しています。