Maison  >  Questions et réponses  >  le corps du texte

Comment les constantes sont définies en Java.

public class EnumDome {

    public static final String SUCCESS = "Y";

    public static final String FAIL = "N";

    enum State{

        SUCCESS("Y"),
        FAIL("N");

        private final String state;

        State(String state){
            this.state = state;
        }

        public String getState(){
            return state;
        }
    }
}

Quelles sont les caractéristiques de ces deux manières de définir des constantes ? Quelle méthode est la plus recommandée lors de l’utilisation ?

我想大声告诉你我想大声告诉你2662 Il y a quelques jours882

répondre à tous(2)je répondrai

  • phpcn_u1582

    phpcn_u15822017-06-12 09:21:32

    Cette question, d'un point de vue grammatical, n'a pas de suspense. Juste Baidu la différence entre les constantes et les énumérations.

    Mais du point de vue de la conception, "enum" est meilleur que "static final".

    Cela peut être un peu abstrait. Laissez-moi vous donner un exemple : par exemple, j'ai défini une fonction publique (plus précisément, une méthode publique) appelée setResponseState

    L'un est défini comme ceci : setResponseState(String state) { ... }, en utilisant la chaîne comme paramètre.

    L'un est défini comme ceci : setResponseState(EnumDemo.State state) { ... }, en utilisant des énumérations comme paramètres.

    Pour la première définition, la méthode d'appel correcte est : setResponseState(EnumDemo.SUCCESS);

    Mais si vous l'appelez ainsi : setResponseState("abcd"); n'y a-t-il aucun problème avec la syntaxe du langage JAVA ?

    Le compilateur peut toujours le transmettre ici... mais cela peut provoquer de graves erreurs lors de l'exécution et réduire la fiabilité du système.

    Le plus gros problème ici est que "les paramètres de la fonction ne sont pas assez clairs", ce qui causera des problèmes aux développeurs qui utilisent cette méthode. Il a dû revenir vérifier mon code source pour enfin déterminer quels paramètres me transmettre...

    Et si j'encapsule cette fonction (méthode) dans un ensemble de code framework et que je ne fournis pas le code source, il sera plus difficile pour les développeurs de vérifier. Cela réduira l’efficacité du développement.

    La méthode de définition utilisant setResponseState(EnumDemo.State state) { ... } est très claire. Soit SUCCÈS, ÉCHEC ou nul.

    Les développeurs ne feront presque jamais d'erreurs en appelant cette fonction (méthode), et il n'est pas du tout nécessaire de vérifier le code source.

    L'approche la plus rigoureuse consiste donc à utiliser des énumérations. Bien sûr, c'est lors de la définition des fonctions publiques (méthodes).

    Et si setResponseState est une fonction (méthode) privée, alors vous pouvez être un peu plus décontracté et utiliser des paramètres de chaîne. Ce « manque de rigueur » ne doit être dénoncé qu’en interne.

    Pour être plus impressionnant, nous devons paraître très professionnels en externe, mais en interne, nous pouvons abaisser un peu nos normes.

    Ce sont deux scénarios d'application différents de constantes et d'énumérations. J'espère que cela vous sera utile...

    répondre
    0
  • 世界只因有你

    世界只因有你2017-06-12 09:21:32

    En termes simples :
    Seul static final est un moyen de définir des constantes. Ce dernier ne l’est pas, mais fonctionnellement similaire. Lequel utiliser dépend de vos besoins

    En détail :
    Adresse postale :

    Introduction à l'utilisation du type Enum en langage Java
    Introduction au type d'énumération Java (enum)

    répondre
    0
  • Annulerrépondre