클래스에 대해 생성 된 여러 .class 파일?
문제
호기심이 없어도, 계산 후 클래스에 대해 여러 Java. 클래스 파일이 생성되는 이유는 무엇입니까? 예를 들어 내 응용 프로그램에는 6 개의 클래스가 있습니다. 한 클래스의 경우 MyClass#1부터 MyClass#10까지 총 10 개의 클래스 파일이 생성되었습니다.
다른 팁
단일 소스 파일에서 더 많은 .class fils를 얻을 수 있습니다.
수업에는 내부 클래스 또는 정적 내부 클래스가 포함되어 있습니다. 내부 수업은 둥지를 틀 수 있습니다. 그들의 이름은
<outer class name>$<inner class name>
.항상 정적 인 내부 인터페이스.
익명의 내부 클래스 (실제로 이름이없는 평범한 내부 클래스)
메인 클래스 전후에 인터페이스 및 클래스를 패키지에 액세스하십시오. 단일 Java 소스 파일에 임의의 패키지 액세스 클래스 및 인터페이스를 가질 수 있습니다. 일반적으로 클래스에서만 사용되는 작은 도우미 개체는 동일한 파일에 넣습니다.
클래스에 내부 클래스가 포함 된 경우 하나의 Java 소스 파일이 여러 클래스 파일을 생성 할 수 있습니다. 익명의 내부 클래스는 번호가 매겨진 클래스 파일로 표시됩니다.
Java의 모든 클래스는 .java-file에 속하지만 .java-file에는 여러 클래스가 포함될 수 있습니다. 여기에는 내면 및 익명 수업이 포함됩니다. 내부 클래스를 위해 생성 된 .class-files는 이름으로 '$'를 포함합니다. 익명의 내부 클래스는 숫자를 얻습니다.
위의 답변에 추가하기 위해 이것은 비교기를 기반으로 생성 된 내부 클래스의 또 다른 좋은 예입니다. (각 비교기는 다른 것으로 컴파일됩니다 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가 생성됩니다.
내부 클래스 및 정적 내부 클래스의 경우 클래스 파일이 생성됩니다.
수업에 내부 클래스가있는 경우에만 컴파일에 하나 이상의 클래스가 생성됩니다.
나타내다:내부 클래스가있는 Java 코드가 왜 세 번째 someclass $ 1.class 파일을 생성합니까?