Outils pour utilisateurs

Outils du site


java

http://test.blog2geek.com/lang-java-critique-615.html

Typage faible

Alors que des langages vérifie le typage, sans même nécessiter d'annotations de la part du programmeur, Java innove : les annotations de types sont obligatoires, mais elles ne sont pas vraiment utilisées. Par exemple, pour comparer deux strings, il faut faire string1.equals(string2). Si jamais string2 n'était pas de type string, le compilateur ne ferait aucune remarque, même pas un warning. De même :

ArrayList<Integer> foo = new ArrayList<Integer>();
foo.contains("test"); // compile

La raison est que contains prend en argument un Object, autrement dit tout et n'importe quoi. On se demande encore pourquoi on a dû préciser deux fois que c'était une liste d'entiers. Mais Java est capable de bien pire que ça :

ArrayList<Short> foo = new ArrayList<Short>();
foo.add(12); // ok...
foo.contains(12); // renvoie false !

Code too large

Java a une limite de 64ko pour la taille des méthodes (dans le bytecode). C'est un problème quand on génère du code. Cela veut aussi dire que, si l'on a du code valide et qu'on l'instrumente, on peut se retrouver avec du code invalide.

Enums

Bug vu en production.

public enum TriState {
  YES, NO, AUTO
}

Combien de valeurs différentes peut prendre une variable de type TriState ? 4. Oui, les enums de Java peuvent être null, ce qui casse un peu l'intérêt des enums.

java.txt · Dernière modification: 2013/05/06 13:23 (modification externe)