题
出于好奇,你为什么有时候多Java。类文件的产生为后一类汇编的?例如,我的应用程序有六个课程。对于一类,一共有10个。类文件已经产生,从MyClass#1MyClass#10.
其他提示
你获得更多。类fils从单一来源文件,如果
该类包含的内部课程或静态的内部课程。内部类可以窝。他们的名字是
<outer class name>$<inner class name>
.内部接口的它们总是静态的。
匿名内部的类(其事实上是普通类内没有名字)
包访问的接口和课程之前和之后你的主要类。你可以有一个任意数量的包装类访问和接口在一个单一的Java源的文件。通常小的帮助对象,只是使用的类是刚刚投入同样的文件。
如果您的类包含内部类,则一个java源文件可以生成多个类文件。匿名内部类由编号的类文件表示。
java中的每个类都属于.java文件,但.java文件可以包含多个类。这包括内部和匿名类。为内部类生成的.class文件在其名称中包含“$”。匿名内部类获得数字。
要添加上面的答案,这是基于Comparators生成的内部类的另一个很好的例子(每个Comparator都是用不同的 MyClass $ X.class 强>):
public class MyClass {
...
public void doSomething() {
...
Collections.sort(list, new Comparator<MyObj>() {
public int compare(MyObj o1, MyObj o2) {
...
}
});
...
}
...
}
如果有一个X.java文件并且它包含4个collections.sort(){}那么在编译X.class之后,X $ 1.class,X $ 2.class,X $ 3.class,X $ 4.class将生成。
对于内部类和静态内部类,会生成更多.class文件。
编译时将生成多个类,仅当您的类具有内部类时才会生成。
不隶属于 StackOverflow