65 votes

Le vieux fait place au neuf

Java est proche de la version 7. Il me semble qu'il doit y avoir beaucoup de manuels et de manuels de formation décrivant des méthodes basées sur d'anciennes versions de Java; où les méthodes enseignées, aurait de meilleures solutions maintenant.

Quelles sont certaines situations de code passe-partout, en particulier celles que les gens implémentent par la force des habitudes, que vous vous retrouvez à refactoriser pour utiliser les dernières versions de Java?

70voto

Eek Points 1050

Enums. Remplacement

 public static final int CLUBS = 0;
public static final int DIAMONDS = 1;
public static final int HEARTS = 2;
public static final int SPADES = 3;
 

avec

 public enum Suit { 
  CLUBS, 
  DIAMONDS, 
  HEARTS, 
  SPADES 
}
 

45voto

Elie Points 7628

Génériques et n’ayant plus besoin de créer un itérateur pour parcourir tous les éléments d’une collection. La nouvelle version est bien meilleure, plus facile à utiliser et à comprendre.

MODIFIER:

Avant:

 List l = someList;
Iterator i = l.getIterator();
while (i.hasNext()) {
    MyObject o = (MyObject)i.next();
}
 

Après

 List<MyObject> l = someList;
for (MyObject o : l) {
    //do something
}
 

37voto

Dónal Points 61837

Utilisation de variables locales de type StringBuffer pour effectuer la concaténation de chaînes. À moins que la synchronisation ne soit requise, il est maintenant recommandé d'utiliser StringBuilder , car cette classe offre de meilleures performances (probablement parce qu'elle n'est pas synchronisée).

35voto

cd1 Points 2661

lire une chaîne depuis l'entrée standard:

Java pré-5 :

 try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String str = reader.readLine();
    reader.close();
}
catch (IOException e) {
    System.err.println("error when closing input stream.");
}
 

Java 5 :

 Scanner reader = new Scanner(System.in);
String str = reader.nextLine();
reader.close();
 

Java 6 :

 Console reader = System.console();
String str = reader.readLine();
 

24voto

Julien Chastang Points 8357

En voici un que je vois:

String.split() versus StringTokenizer .

StringTokenizer n'est pas recommandé pour le nouveau code, mais je vois toujours des gens l'utiliser.

En ce qui concerne la compatibilité, Sun déploie des efforts considérables pour que Java soit compatible en amont et en aval. Cela explique en partie pourquoi les génériques sont si complexes. La dépréciation est également supposée aider à faciliter les transitions de l'ancien au nouveau code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X