Dans l'exemple de code ci-dessous, j'essaie de tester la valeur d'une énumération dans la classe parente. L'erreur que j'obtiens est "p.theEnum ne peut pas être résolu ou n'est pas un champ.", Mais c'est exactement le même code que j'utilise dans la classe parente pour tester la valeur (sans la p évidemment).Énumération des parents dans Java
Où est-ce que je me trompe? :)
public class theParent {
protected static enum theEnum { VAL1, VAL2, VAL3 };
private theEnum enumValue = theEnum.VAL1;
theParent() { this.theChild = new theChild(this); this.theChild.start(); }
class theChild {
private parentReference p;
public theChild (theParent parent) { this.p = parent; }
public void run() {
// How do I access theEnum here?
if (p.enumValue == p.theEnum.VAL1) { }
}
}
}
Ah à la vôtre. Le problème que j'ai rencontré là-bas était que theEnum s'appelait en fait State, et qu'il essayait d'utiliser Thread.State, d'où la présence de p.theEnum au lieu de juste l'Enum :) Aussi, désolé pour le manque de compilation. Je connais à peine Java (je suis un gars PHP qui l'apprend) alors j'ai fait de mon mieux dans une zone de texte: P Qu'est-ce qui m'a manqué? – JoeC
@JoeC: Il est préférable de trouver des exemples courts mais complets dans un IDE, afin de pouvoir les vérifier. Dans ce cas, vous appelez 'start' sur' theChild' qui n'est pas valide, et vous avez une variable de type 'parentReference' plutôt que' theParent'. De même, vous n'avez pas déclaré un champ appelé 'theChild' mais vous l'avez assigné dans le constructeur parent. Je pense qu'il y en a eu d'autres aussi - pas sûr. En outre, je suggérerais d'utiliser des noms qui reflètent les conventions de nommage Java, car cela rend les bizarreries plus visibles. –