[JAVA] Voici un résumé de ce que j'ai été curieux à propos d'Enum récemment

introduction

――Le thème de cette fois est le titre

Déclencheur

――Je développe une équipe, et les personnes qui ont l'information dans Enum sont assez différentes selon la personne ~~ J'étais un peu insatisfaite, donc cette fois j'essaye de me débarrasser de ma colère en écrivant un article ~~ Mes connaissances J'ai pensé que je l'utiliserais pour organiser.

Code en question

――Je pense que je vais entrer dans le sujet principal tout de suite, mais tout d'abord, je pense que le nom de la constante d'Enum est fondamentalement capital + Ansco (même si ce n'est pas Enum) «Alors, je pense que je vais l'écrire comme ci-dessous.

WeatherEnum.java



public enum WeatherEnum {

    WEATHER_SUNNY("weather_sunny", "sunny"),
    WEATHER_CLOUDY("weather_cloudy", "cloudy")
    ;
    
    private String lowerCase;
    private String shortName;

    //Obtention et constructeur omis
}

«J'étais curieux de savoir qu'il y avait un cas où le nom de la constante avait tous les caractères minuscules comme informations Enum, et je me demandais personnellement ce que c'était.

La raison pour laquelle j'étais intéressé

――Je sentais que je ne pensais pas beaucoup à la maintenabilité (le nom et la valeur de la constante doivent être modifiés) --toString (). ToLowerCase ()

Alors, qu'est-ce-qu'il s'est passé ...

`` J'ai senti qu'il valait mieux faire toLowerCase () du côté de l'appelant sans l'avoir comme valeur, alors je l'ai vaincu dans cette direction, mais quand j'ai enquêté correctement, j'ai senti que je pouvais faire diverses choses. Je ne sais pas si c'est le meilleur, mais je pense que je vais vous donner quelques réponses (peut-être que ce serait bien s'il y avait un accord au sein de l'équipe).

Proposition 1

--Faites .toLowerCase () à chaque fois à l'appelant «Je pense que c'est probablement le moyen le plus simple de le faire. Cependant, j'ai aussi le sentiment que le code d'appel devient redondant.

Proposition 2

WeatherEnum.java


public enum WeatherEnum {

    WEATHER_SUNNY("sunny"),
    WEATHER_CLOUDY("cloudy")
    ;

    private String shortName;

    //Obtention et constructeur omis

    public String getLowerCase() {
        return toString().toLowerCase();
    }
}

Proposition 3

--Override toString ()

WeatherEnum.java


public enum WeatherEnum {

    WEATHER_SUNNY("sunny"),
    WEATHER_CLOUDY("cloudy")
    ;

    private String shortName;

    //Obtention et constructeur omis

    @Override
    public String toString() {
        return name().toLowerCase();
    }
}

Plan 4 (bonus)

«En conclusion, le plan 3 est bon, mais j'ai trouvé d'autres idées, alors je vais juste l'écrire.

HelloInterface.java


public interface HelloInterface {

    String getLowerCase();
}

HelloEnum.java


public enum HelloEnum implements HelloInterface{

    WEATHER_SUNNY( "sunny"),
    WEATHER_CLOUDY( "cloudy")
    ;

    private String shortName;

    //Obtention et constructeur omis
    
    @Override
    public String getLowercase() {
        return name().toLowerCase();
    }
}

Résumé

--Il semble bon de remplacer toString () de Enum et de l'implémenter afin qu'il renvoie le format d'affichage du nom de constante que vous souhaitez le plus pour votre cas d'utilisation. À ce moment-là, si vous rencontrez un cas rare où vous voulez toutes les lettres majuscules, je parlais d'essayer de l'éviter avec name ().

Lien de référence

Recommended Posts

Voici un résumé de ce que j'ai été curieux à propos d'Enum récemment
Résumé de ce que j'ai appris sur Spring Boot
Un petit résumé sur la configuration de typeafe