Java extensible énumération
Est-il un moyen d'écrire une énumération qui peut être prolongée. J'ai plusieurs méthodes que je voudrais toujours disponible pour mes énumérations. Pour exemple, j'utilise une énumération de mon champs de base de données. - Je inclure le champ nom dans la base de données.
public enum ORDERFIELDS
{
OrderID("Order_ID");
private String FieldName;
private ORDERFIELDS(String fname)
{
this.FieldName = fname;
}
public String getFieldName()
{
return FieldName;
}
}
OriginalL'auteur Milhous | 2008-10-21
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien, ce que vous voulez faire est quelque chose comme ceci:
Ensuite définir votre enum pour étendre cette classe. Toutefois, malheureusement, un enum ne peut pas étendre une classe, mais elle peut implémenter une interface, donc le mieux que vous pouvez faire pour le moment est de définir une interface qui comprend la getFieldName() la méthode et d'avoir tous vos énumérations d'implémenter cette interface.
Toutefois, cela signifie que vous devrez reproduire la mise en œuvre de cette méthode (et les autres) dans tous vos énumérations. Il y a quelques suggestions dans cette question sur les façons de minimiser la duplication.
OriginalL'auteur Dónal
Tous les énumérations implicitement étendre
java.lang.Enum
. Depuis Java ne supporte pas l'héritage multiple, une enum ne peut pas s'étendre à toute autre chose.OriginalL'auteur Guido
Les énumérations peuvent mettre en œuvre des interfaces, mais s'étend pas depuis quand compilé ils se traduisent par une java.lang.Enum.
OriginalL'auteur Guðmundur Bjarni
Résumé les énumérations sont potentiellement très utile (et ne sont pas autorisés). Mais une proposition et d'un prototype existe si vous souhaitez hall quelqu'un dans le Soleil pour l'ajouter:
http://freddy33.blogspot.com/2007/11/abstract-enum-ricky-carlson-way.html
Soleil RFE:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570766
OriginalL'auteur Alex Miller
Pour un retour à la pré-Java 5 jours, prendre un coup d'oeil à L'article 21, Chapitre 5,Efficace Java par Josh Bloch. Il parle de l'extension "les énumérations" en ajoutant des valeurs, mais vous pourriez peut-être utiliser certaines techniques pour ajouter une nouvelle méthode?
OriginalL'auteur
Métier main enum dans un mécanisme similaire à celle définie dans Josh Bloch Effectif de Java.
Je voudrais ajouter que si vous avez besoin de "prolonger" l'enum, alors peut-être un enum n'est pas la construction, vous êtes après. Ils sont destinés à être des constantes statiques à mon humble avis.
OriginalL'auteur Aidos