コンパイル時に、予期しない匿名クラスを取得しています。関連するコードが続き、さらに詳細な説明が続きます。
CircuitType.java全体:
public enum CircuitType { V110A20, V110A30, V208A20, V208A30 }
Auditor.javaの3〜9行目:
public class Auditor {
private String[] fileNames;
private int numV110A20;
private int numV110A30;
private int numV208A20;
private int numV208A30;
Auditor.javaの104〜121行目:
[...]
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;
}
[...]
Circuit.javaの1〜5行目:
public class Circuit {
private CircuitType myType;
public CircuitType getType() {
return this.myType;
}
[...]
コマンドが
javac *.java
が実行されると、匿名クラスAuditor$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 {};
}