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

avec Java Discussion :

Bloc au sein d'une méthode


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Points : 43
    Points
    43
    Par défaut Bloc au sein d'une méthode
    Salut tout le monde,

    A quoi sert de mettre un bloc au sein d'une méthode, et quand est ce qu'il va etre exécuter? qu'ils sont les cas d'utilisation ou on a vraiment besoin de faire..? tout autre éclaircissement sera la bienvenue;

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static void main (String[] args) {
    		int x = 5;
    		{
    			x++;
    		}
    		System.out.println(x);
    	}

  2. #2
    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
    Bonne question, je me le demande aussi.

    Je crois qu'un bloc comme celui-ci ne sert à rien.
    Il va s'exécuter dans l'ordre de lecture, exactement comme si ce qui est dans le bloc était à la place du bloc.

    Alors pourquoi est-ce possible ? Sans doute parce qu'il est possible de faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(ilPleut())
      prendreParapluie();
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i = 0; i < 5; i++)
      sum++;
    alors qu'en général on pense plutôt à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(ilPleut()) {
      prendreParapluie();
      prendreKWay();
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i = 0; i < 5; i++) {
      sum++;
      faireAutreChose();
    }
    Bref, le bloc d'instruction est englobé comme une seule instruction par les for, while, do, if, else, et j'en oublie peut-être.
    C'est sans doute pour ça qu'il existe sous sa forme la plus simple.

    Bien que je ne l'ai jamais vu faire, il y a une utilisation possible : poser une étiquette devant le bloc, et faire un break vers cette étiquette :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    label1:
      {
        while(true) {
          // sortir du block label1
          break label1;
        }
        // Code mort
        System.out.println("On n'arrivera jamais ici");
      }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    je me sers de blocs non étiquetés dans du code quand je veux clairement mettre en évidence un bloc de code (sans avoir une méthode spécifique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     //dans du graphique
     Panel saisieInfos = new Panel() ;
     { 
        //ici je traite toute ce qui concerne ce panel
     
      }
      this.add(saisieInfos, BorderLayout.NORTH) ;
      // etc....
    donc ici l'effet est presque uniquement documentaire (+ je mets tout ce qui concerne ce panel uniquement en portée dans le bloc)
    remarque on peut aussi faire un bloc étiqueté encore plus explicite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void méthode() throws UneException {
       appelDeMéthodePropageantUneException() ;
       NON_EXECUTE_SI_EXCEPTION : {
            // du code
      }
    ici encore c'est documentaire
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  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
    n'oubliez pas que les variable d'un bloc sont libérable dès sortie de celui-ci. Dans certains cas, ca permet de se débarasser facilement de variable encombrante en mémoire.

Discussions similaires

  1. [XL-2003] Appel d'une méthode, bloc with non défini
    Par Celes_Vongola dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/12/2013, 10h22
  2. [Débutant] [POO] Définition de Méthodes au sein d'une classe Objet
    Par ghada97 dans le forum MATLAB
    Réponses: 7
    Dernier message: 29/11/2013, 18h31
  3. Réponses: 2
    Dernier message: 04/06/2006, 18h53
  4. Réponses: 3
    Dernier message: 16/04/2004, 16h51
  5. une méthode qui écrit dans la sortie html ?
    Par iubito dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/12/2003, 15h34

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