컴파일 시간에 익명의 클래스가 생겨서 기대하지 않습니다. CircuitType.java의Public Enum을 참조하면 익명 클래스가됩니다.
전체 : Auditor.java에서
public enum CircuitType { V110A20, V110A30, V208A20, V208A30 }
, 선 3-9 : Auditor.java에서
public class Auditor {
private String[] fileNames;
private int numV110A20;
private int numV110A30;
private int numV208A20;
private int numV208A30;
, 선 관련 코드는 좀 더 자세한 설명을 다음 104-121 : Circuit.java에서
[...]
switch (newCircuit.getType()) {
case V110A20:
this.numV110A20++;
break;
case V110A30:
this.numV110A30++;
break;
case V208A20:
this.numV208A20++;
break;
case V208A30:
this.numV208A30++;
break;
default:
System.err.println("An Error Has Occured.");
System.exit(-1);
break;
}
[...]
, 선 1-5 :
public class Circuit {
private CircuitType myType;
public CircuitType getType() {
return this.myType;
}
[...]
명령
javac *.java
가 실행되면 익명의 클래스 감사 $의 1.java가 생성됩니다. 이 파일들은 분명히 파일 시스템 디렉토리에 서로 가깝게 앉아있다.
줄 104-121이 주석 처리되면 익명의 클래스가 생성되지 않습니다.
처음에는 이것이 패키지 문제라고 생각했기 때문에 3 가지 클래스를 하나의 패키지에 넣었지만 제대로 작동하려면 패키지에 대해 충분히 알지 못했습니다. 진정한 패키지 문제라면 누군가가 레이블을 지정하는 방법을 정확히 안내 할 수 있습니까? 비록 내가 할 필요가 없다면 나는 그들을 포장하지 않아도 될 것입니다.
익명 클래스가 문제가되는 이유는 그러한 클래스가 일반적으로 네임 스페이스 문제를 의미한다는 사실 외에도 자동 컴파일을 위해 사용하는 Makefile이 손상된다는 것입니다. 내가 앞서 간 소스를 포함하는 작은 프로젝트를 구축 한
% javap 'Auditor$1'
Compiled from "Auditor.java"
class Auditor$1 extends java.lang.Object{
static final int[] $SwitchMap$CircuitType;
static {};
}
불행하게도 내가 문제를 도울 수 있지만, +1 매우를 게시 잘 설명 된 질문. –
이것은 아마도 여러분이 듣고 싶은 대답은 아니지만,'make'는 자바 개발을위한 적절한 도구가 아닙니다. 대신'ant '를 사용하는 것이 좋습니다. 보다 복잡한 응용 프로그램을 개발할 때 익명의 수업을 진행하게 될 것입니다. –
Auditor.java에 대해 더 많이 알고 싶습니다. 여기에 언급 한 것을 토대로 볼 때 Circuit.java가 문제라고 믿기가 어렵습니다. – Shaun