Par exemple, écrivez un morceau de code comme celui-ci :
Copiez le code comme suit :
int je;
{
entier j=1 ;
je=j;
}
Si ce code existe dans la zone de définition de classe, alors nous savons qu'il s'agit d'un bloc d'instructions ordinaire utilisé pour initialiser le contenu des attributs de classe. Il sera appelé lorsque la classe sera instanciée et certaines méthodes pourront y être exécutées.
Dans de nombreux cas, il sera utilisé dans les modes singleton et autres. Ajoutez un statique avant pour initialiser le contenu des classes complexes, ce qui peut éviter certaines exceptions d'exécution causées par la séquence de chargement.
Mais que se passe-t-il si ce code apparaît dans une méthode ?
Cela n’a fondamentalement aucun sens. Dans mes réflexions précédentes, il s'agissait simplement d'un format pour inclure du code, rien d'autre.
Aujourd'hui, j'ai écrit un petit code lié aux "balises d'instruction" :
Copiez le code comme suit :
étiquette17 : int je ;
int j;
ThreadGroup[] arrayOfThreadGroup;
si (drapeau)
casser l'étiquette17 ;
renvoie 0 ;
L'exception « Erreur de syntaxe sur le jeton : », {attendu après ce jeton » s'est produite à la position : :.
C'est-à-dire que lorsque le code ne peut pas exister sur une seule ligne (int je dois avoir une position d'instanciation/affectation claire à l'intérieur du corps de la méthode), label17 doit être marqué avec un bloc d'instructions.
Le format correct est :
Copiez le code comme suit :
étiquette17 : {
int je;
int j;
ThreadGroup[] arrayOfThreadGroup;
si (drapeau)
casser l'étiquette17 ;
renvoie 0 ;
}
ou:
étiquette17 :
int je;
int j;
ThreadGroup[] arrayOfThreadGroup;
si (drapeau){
casser l'étiquette17 ;
renvoie 0 ;}
Regardons une utilisation incorrecte :
Copiez le code comme suit :
étiquette13 : int x = 0 ;
De toute évidence, il y a un bloc d'instructions par défaut sur une seule ligne après l'étiquette. Ce x ne peut être utilisé nulle part dans le futur, erreur. Les conseils sont les suivants :
Plusieurs marqueurs sur cette ligne
- x ne peut pas être résolu en variable
- Erreur de syntaxe sur le token "int", supprimez ce token
Il existe deux formats corrects :
Copiez le code comme suit :
entier x = 0 ;
étiquette13 : x = 0 ;
ou
étiquette13 : {int x = 0 ;}
J'ai donc supposé qu'un malentendu précédent était que dans des usages tels que for(){} et if(){}, le if() logique et le bloc d'instructions {} devraient être deux syntaxes indépendantes.