IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Problème dans une enum avec case


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Problème dans une enum avec case
    Bonjour,
    j'aimerais faire un case dans mon enum hors le type de l'enum n'etant pas un string n'est pas reconnu par mon case.
    Y aurait-il un autre moyen ?
    Voici le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public enum RouteType {
    		DEFAULT(null),
    		AVOID_HIGHWAYS("highways"),
    		AVOID_TOLLS("tolls"),
    		AVOID_FERRIES("ferries"),
    		PUBLIC_TRANSIT("transit"),
    		WALKING("walking"),
    		BICYCLING("bicycling");
    		private String param;
    		private RouteType(String param) { this.param = param; }
    		public String getParam() { return param; }
    		public String toParam() { 
    			switch(this.param)
    			{
    			case null:
    				return "";
    				break;
    			case AVOID_HIGHWAYS: case AVOID_TOLLS: case AVOID_FERRIES:
    				return new StringBuilder("&avoid=").append(this.param).toString();
    				break;
    			case PUBLIC_TRANSIT: case WALKING: case BICYCLING:
    				return new StringBuilder("&mode=").append(this.param).toString();
    				break;
    				default:
    					break;
    			}
    		}
    	}
    PS : c'est pour utiliser le web service de google maps

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le switch est de type String (this.param) alors que les case contiennent des enums RouteType...
    Un switch(this) devrait faire l'affaire...


    Sinon pourquoi utiliser StringBuilder ici ? Cela alourdit inutilement le code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public enum RouteType {
    		DEFAULT(null),
    		AVOID_HIGHWAYS("highways"),
    		AVOID_TOLLS("tolls"),
    		AVOID_FERRIES("ferries"),
    		PUBLIC_TRANSIT("transit"),
    		WALKING("walking"),
    		BICYCLING("bicycling");
    		private String param;
    		private RouteType(String param) { this.param = param; }
    		public String getParam() { return param; }
    		public String toParam() { 
    			switch(this.param)
    			{
    			case DEFAULT:
    				break;
    			case AVOID_HIGHWAYS: case AVOID_TOLLS: case AVOID_FERRIES:
    				return "&avoid=" + this.param;
    				break;
    			case PUBLIC_TRANSIT: case WALKING: case BICYCLING:
    				return "&mode=" + this.param;
    				break;
    			default:
    				break;
    			}
    			return "";
    		}
    	}

    a++

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Un switch(this) me ferait changer le type de retour de ma méthode.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    y a pas de raison!

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    et pourtant..

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Amusant.

    Tu peux nous montrer ton code après que tu aies été obligé de changer le type de retour ? Je suis curieux de savoir comment tu fais pour en arriver là, sans vouloir en arriver là et sans raison d'en arriver là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Enfaite si jamais j'ecrit switch(this)
    comme ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public String toParam() { 
    			switch(this)
    			{
    			case DEFAULT:
    				return "";
    				break;
    			case AVOID_HIGHWAYS: case AVOID_TOLLS: case AVOID_FERRIES:
    				return new StringBuilder("&avoid=").append(this.param).toString();
    				break;
    			case PUBLIC_TRANSIT: case WALKING: case BICYCLING:
    				return new StringBuilder("&mode=").append(this.param).toString();
    				break;
    				default:
    					break;
    			}
    		}
    Eclipse me demande de changer le type de retour de ma fonction.

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tiens c'est marrant moi il me dit beaucoup de choses, mais rien qu'on pourrait croire avoir un rapport avec le type de retour de la méthode.
    On peut voir les messages d'erreur et lignes concernées ?


    ... 'Fin bon.
    • Pas de case null. Remplace par default si tu veux.
    • Pas d'instruction après un return : les breaks sont inutiles puisque la méthode est déjà finie.
    • La méthode doit forcément se terminer sur un return. Tu n'as pas le droit d'atteindre la fin du switch et ne rien faire ensuite.

    ... Et pas le moindre changement de type de retour.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    ligne 1 : This method must return a result of type String
    et au niveau de chaque break : Unreachable code

    désolé je ne suis pas un pro en java..

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par spyke brain Voir le message
    ligne 1 : This method must return a result of type String
    Donc un message qui te dit que tu n'as pas le droit de faire autre chose que renvoyer quelque chose du type de retour, String.
    Il te le dit parce que ta méthode ne se termine pas toujours par un return, et donc ne fournit pas toujours de String à renvoyer. C'est interdit. Tu dois toujours atteindre un return d'une manière ou d'une autre.

    Citation Envoyé par spyke brain Voir le message
    et au niveau de chaque break : Unreachable code
    Je vois pas le rapport avec le type de retour.
    Il dit que tu as du code inatteignable. Il ne faut pas avoir de code inatteignable.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Ok j'ai compris ! C'est tout bete finalement.. Merci beaucoup.

    ET pour le break, je ne savais pas qu'on pouvait ne pas les mettre sur un switch.

    Merci beaucoup, tout marche !

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par spyke brain Voir le message
    ET pour le break, je ne savais pas qu'on pouvait ne pas les mettre sur un switch.
    On peut, et on doit mettre des break dans un switch, en général. Mais c'est une instruction comme une autre. Et on ne peux pas mettre d'instruction après un return

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/02/2020, 13h52
  2. [AJAX] Authentification avec ajax
    Par devvanjier dans le forum AJAX
    Réponses: 2
    Dernier message: 29/10/2011, 06h32
  3. Problème de requête dans une boucle avec ADOQuery
    Par Ekik dans le forum Bases de données
    Réponses: 8
    Dernier message: 14/05/2007, 16h07
  4. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  5. Problème dans une requête SQL avec AS et ON ?
    Par bds2006 dans le forum Bases de données
    Réponses: 9
    Dernier message: 26/06/2006, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo