Je reçois une classe anonyme à la compilation que je ne m'attendais pas. Code pertinent suit, puis une explication plus détaillée:Référence à Enum Public résultats dans la classe Anonyme
Intégralité de CircuitType.java:
public enum CircuitType { V110A20, V110A30, V208A20, V208A30 }
De Auditor.java, lignes 3-9:
public class Auditor {
private String[] fileNames;
private int numV110A20;
private int numV110A30;
private int numV208A20;
private int numV208A30;
lignes De 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;
}
[...]
De Circuit.java, lignes 1-5:
public class Circuit {
private CircuitType myType;
public CircuitType getType() {
return this.myType;
}
[...]
Lorsque la commande
javac *.java
est exécuté, une classe anonyme vérificateur 1.java $ est généré. De toute évidence, les fichiers sont placés côte à côte dans un répertoire de système de fichiers qui ne contient rien d'autre.
Lorsque les lignes 104-121 sont mises en commentaire, aucune classe anonyme n'est générée. J'ai d'abord pensé que c'était un problème de paquetage, donc mettez les trois classes dans un paquet, mais je ne savais pas assez sur les paquets pour le faire fonctionner. Si c'est vraiment un problème d'emballage, quelqu'un peut-il m'expliquer exactement comment les étiqueter? Je préférerais ne pas devoir les emballer si je n'ai pas à le faire.
La raison pour laquelle la classe anonyme est un problème, outre le fait que ces classes signifient généralement un problème d'espace de noms, est qu'elle casse mon Makefile que j'utilise pour la compilation automatique.
Mise à jour
Ci-joint une session de console qui, je l'espère faire la lumière sur ce mystère:
% javap 'Auditor$1'
Compiled from "Auditor.java"
class Auditor$1 extends java.lang.Object{
static final int[] $SwitchMap$CircuitType;
static {};
}
Malheureusement je ne peux pas aider avec le problème, mais +1 affichant une très question bien posée. –
Ce n'est probablement pas la réponse que vous vouliez entendre, mais 'make 'n'est pas vraiment un outil approprié pour le développement de Java. Je recommande fortement d'utiliser 'ant' à la place. Au fur et à mesure que vous développez des applications plus complexes, vous aurez des classes anonymes partout et à juste titre. –
Je serais intéressé de voir plus de Auditor.java. Sur la base de ce que vous avez déclaré ici, j'ai du mal à croire que Circuit.java soit le problème. – Shaun