Multiple .class files generated for a class?
Solution 1:
These are for inner classes and static nested classes. The ones with numbers are anonymous inner classes.
For example:
class Foo {
class Bar { }
static class Baz { }
void run() {
Helper t = new Helper() {
int helpMethod() {
return 2;
}
};
}
}
This will produce class files Foo.class
, Foo$Bar.class
, Foo$Baz.class
and Foo$1.class
(for the implementation of the Helper
interface)
Solution 2:
You get more .class fils from a single source file if
the class contains inner classes or static inner classes. Inner classes can nest. Their names are
<outer class name>$<inner class name>
.inner interfaces which are always static.
anonymous inner classes (which in fact are plain inner classes without a name)
package access interfaces and classes before and after your main class. You can have an arbitrary number of package access classes and interfaces in a single Java source file. Usually small helper objects that are only used by the class are just put into the same file.
Solution 3:
One java source file can generate multiple class files, if your class contains inner classes. Anonymous inner classes are represented by your numbered class files.
Solution 4:
Every class in java belongs to a .java-file, but a .java-file can contain multiple classes. That includes inner and anonymous classes. The .class-files generated for inner classes contain a '$' in their name. Anonymous inner classes get numbers.