2012-02-10 4 views
1

Sur this lien coderanch, je trouve que le commentaire suivant donnera erreur du compilateur: -Erreur due au contenu dans un commentaire juridique en Java

// Compiler Error due to this Unicode char '\u000a' 

Raison d'être, la séquence Unicode est directement remplacé par le caractère réel ça correspond à. Comme '\ u000a' correspond au caractère newLine, une nouvelle ligne est placée à l'endroit où '\ u000a' est trouvé.

Ma question est la suivante: "Existe-t-il un autre moyen d'avoir une erreur de compilation due à un commentaire?"

Répondre

2

Si vous définissez une fonction d'un dépréciée dans un commentaire (@deprecated), et que vous définissez votre compilateur pour lancer des erreurs lorsque les méthodes dépréciées sont utilisées (au moins le compilateur interne Eclipse peut être configuré ce fut, autant que je sache)

1
/* Compiler Error due to this Unicode char '*/' */ 
0

Cette erreur n'est pas provoquée par le commentaire lui-même. Si vous utilisez le même \u000a ailleurs dans votre code, vous obtiendrez le même type d'erreur. Par exemple:

// This will give you a similar error 
char c = '\u000a'; 

Le fait que la séquence d'échappement est dans un commentaire dans votre exemple ne signifie pas que le commentaire est ce qui provoque l'erreur.

+0

Oui, je sais déjà que le lien coderanch que et dans ma question. Ma question est, avons-nous aussi un autre caractère Unicode qui donne ce comportement. Ou tout autre moyen d'obtenir une erreur dans les commentaires! – whitehat

+0

Tous les caractères sont des caractères Unicode; la notation '\ uXXXX' est juste une manière alternative de les écrire dans le code. Ainsi, toute fuite d'Unicode qui met un caractère dans un mauvais endroit provoquera une erreur de compilateur, exactement la même que lorsque vous mettiez le personnage correspondant lui-même au mauvais endroit. – Jesper

4

"Le compilateur ne traduit pas seulement les échappements Unicode dans les caractères qu'ils représentent avant d'analyser un programme en jetons [...], mais il le fait avant de rejeter les commentaires et les espaces blancs [JLS 3.2]." Java ™ Puzzlers: pièges, pièges, et les cas de coin Par Joshua Bloch, Neal Gafter.

Et les lignes suivantes sont du code Java valide:

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020 
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079 
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020 
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063 
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028 
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020 
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b 
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074 
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020 
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b 
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d 
Questions connexes