enum mise en œuvre à l'intérieur de l'interface Java
J'ai une question à propos de mettre un enum de Java dans l'interface.
Pour plus de clarté, veuillez consulter le code suivant:
public interface Thing{
public enum Number{
one(1), two(2), three(3);
private int value;
private Number(int value) {
this.value = value;
}
public int getValue(){
return value;
}
}
public Number getNumber();
public void method2();
...
}
Je sais que l'interface se compose de méthodes avec corps vides. Toutefois, l'énumération que j'ai utilisé ici a besoin d'un constructeur et une méthode pour obtenir une valeur associée. Dans cet exemple, l'interface proposée ne sera pas composé uniquement de méthodes avec des corps vides. Est-ce la mise en œuvre a permis?
Je ne suis pas sûr si je devrais mettre l'enum classe à l'intérieur de l'interface ou de la classe qui implémente cette interface.
Si je mets de la enum dans la classe qui implémente cette interface, la méthode public Nombre getNumber() doit retourner le type enum, qui me forçait à importer les enum dans l'interface.
- Supplémentaires (conceptuel) question. En supposant que cela peut être fait, supposons que vous avez une classe Impl implémente Chose { ... }, et dans certains autres de la classe Utilisateur, Chose chose = new Impl(...) et puis vous voulez que le Nombre n = chose.getNumber(); - Comment la classe à l'Utilisateur de savoir quelle est la définition du Nombre?
Vous devez vous connecter pour publier un commentaire.
Il est parfaitement légal d'avoir une
enum
déclarée à l'intérieur d'uninterface
. Dans votre situation, l'interface est juste utilisé comme un espace de noms pour les enum et rien de plus. L'interface est normalement utilisé partout où vous les utilisez.enum
est partie, et pas de lainterface
.Exemple ci-Dessus, les Choses sont énumérés ci-dessous :
En bref, oui, c'est bien.
L'interface ne contiennent pas de corps de méthode; au lieu de cela, il contient ce que vous appelez les "corps vides" et plus communément connu comme signatures de méthode.
Il n'est pas question que le
enum
est à l'intérieur de l'interface.Oui, c'est légal. Dans une situation "réelle" du Nombre allait mettre en œuvre la Chose, et la Chose aurait probablement un ou plusieurs méthodes vides.