0
votes

Utilisation de Lombok @geter Annotation avec Java Enum

J'essaie d'utiliser un Enum comme une carte pour récupérer des noms de pays des codes de pays Alpha-2. J'ai une classe ENUM comme SO:

String country = new Country("AF").getFullName();


4 commentaires

essayez af.getfullname () ;) (Les constructeurs enum doivent tous être invoqués dans l'énum ... ... sans "nouveau" mot-clé !; ... donc AF ("Afghanistan" ) est la déclaration ENUM (Instance) + Invocation du constructeur)


Le problème est que j'aimerais idéalement utiliser une variable à la place de la chaîne codée String Country = Nouveau pays (CountryCode) .getfullName (); .


Utilisez pays.af ou pays.valueof ("AF") . En outre, cela n'a rien à voir avec Lombok, vous n'utilisez que cela pour générer un getter.


Si vous souhaitez le pays AF de la chaîne "AF" , vous pouvez utiliser: pays.valueof ("AF") ..Si vous Besoin de cette fonctionnalité pour le nom complet, vous devez mettre en œuvre.


3 Réponses :


1
votes

Vérifiez ce https://stackoverflow.com/a/16851422/3874879 Enums ne peut pas être instancié, ils sont comme une constante, vous devez les définir au moment de la compilation, je suppose


0 commentaires

0
votes

Vous ne pouvez pas créer d'objet.

vérifier cette documentation: https: // docs .Orcle.com / Javase / 7 / Docs / API / Java / Lang / Enum.html P>

Et essayez ceci: String Pays = Pays.af.getfulname (); / CODE> P>

EDIT STRY>: Si vous souhaitez utiliser une variable à la place de la chaîne de code papier, vous pouvez définir une méthode comme FindbyCountrycode (CountryCode) Code> Votre ENUM P>

public Country findByCountryCode(String code) {
    for (Country value : Country.values()) {
        if (value.getFullName().equals(code)) {
            return value;
        }
    }
    return null;
}


0 commentaires

1
votes

Un énumé est une "classe" spéciale qui représente un groupe de constantes (variables immuables, telles que les variables finales).

Vous pouvez accéder aux constantes ENUM avec la syntaxe DOT: P>

String country = Country.AF.getFullName();


0 commentaires