La nouvelle fonctionnalité de
Java7 consiste à ajouter la prise en charge de String dans le bloc de code du commutateur. Bien qu'elle n'ajoute que String, elle est bien meilleure que la version précédente qui ne prenait en charge que Integer. et pas seulement String, tous les objets peuvent être utilisés dans des blocs de commutation (Correction : le commutateur C# 2.0 ne peut utiliser que bool, char, integer, enum, string et les types de valeur nullables correspondants. Une expression de switch ou une étiquette de cas doit être un bool , char, chaîne, intégrale, énumération ou type nullable correspondant).
;L'instruction try-with-resource
;Cette nouvelle fonctionnalité de Java7 est très familière aux programmeurs C# 2.0 Lors du codage de certaines ressources qui doivent être publiées à temps, l'approche habituelle consiste à appeler la méthode close() pour les libérer, et C# fournit une méthode simple pour réaliser la même fonction, le code est le suivant :
; Ce qui suit est un fragment de code :
; using (SqlConnection conn = new SqlConnection ("ConnectionStringHere)) {
;// Do Something
;}
;Le code ci-dessus est équivalent à :
;Ce qui suit est l'extrait de code :
;SqlConnection conn = new SqlConnection("ConnectionStringHere);
;try{
;conn.open();
;// Faites quelque chose
; } enfin{
;conn.close();
;}
;Et Java7 implémente une fonction similaire, mais au lieu d'utiliser using, il utilise try Le code est le suivant :
;Ce qui suit est un extrait de code :
; try (BufferedReader br = new BufferedReader (new FileReader (path))) {
;return br.readLine();
;}
Pour C#, using using doit remplir une condition, c'est-à-dire que l'objet déclaré dans using implémente l'interface System.IDisposable, de cette manière, le code du bloc final peut automatiquement appeler la méthode Dispose()
sous cette interface pour atteindre l'objectif de libération des ressources. La même exigence existe pour Java7, c'est-à-dire que l'objet doit implémenter l'interface java.lang.AutoCloseable ou java.io.Closeable.
;La boucle For-Each
Java7 implémente enfin la fonction de boucle for-each. Bien qu'il s'agisse d'une amélioration de la syntaxe dans Java5, puisqu'il n'y a pas de mise à jour de la syntaxe dans Java6, je listerai cette amélioration comme une nouvelle fonctionnalité de Java7. Mais je ne comprends pas pourquoi nous utilisons toujours for comme mot-clé au lieu d'introduire directement le mot-clé foreach comme C#. Est-ce plus facile à comprendre ? Voici la version Java du code for-each :
;Ce qui suit est l'extrait de code :
;void CancelAll(Collection c) {
;for (TimerTask t: c)
;t.cancel();
;}
;Pour la version C#, le code est le suivant :
;Voici l'extrait de code :
;void CancelAll(Collection c) {
;foreach (TimerTask t in c)
;t.Cancel();
;}
On peut voir que l'implémentation des deux n'a pas beaucoup de différence, elle est également concise et claire, mais le champ d'application est différent. Java7 semble être implémenté uniquement dans les collections (y compris les tableaux traditionnels et les collections génériques), alors que C# le peut. être utilisé dans toute implémentation de System.IEnumerable ou de ses génériques. Tapez la version de l'objet System.IEnumerable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!