Verrouillage d'un littéral de chaîne
synchronized("one") { /* block one A*/ }
synchronized("one") { /* block one B*/ }
Noms de classe très longs. (dans le JRE)
com.sun.java.swing.plaf.nimbus.
InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState
Mauvaise structure d'héritage
com.sun.corba.se.internal.Interceptors.PIORB extends
com.sun.corba.se.internal.POA.POAORB extends
com.sun.corba.se.internal.iiop.ORB extends
com.sun.corba.se.impl.orb.ORBImpl extends
com.sun.corba.se.spi.orb.ORB extends
com.sun.corba.se.org.omg.CORBA.ORB extends
org.omg.CORBA_2_3.ORB extends
org.omg.CORBA.ORB
Une exception qui ne l'est pas.
public interface FlavorException { }
Gestion des erreurs inutiles et cryptiques
if (properties.size() > 10000)
System.exit(0);
Création inutile d'objets
Class clazz = new Integer(0).getClass();
int num = new Integer(text).intValue();
Lancer une exception à d'autres fins
try {
Integer i = null;
Integer j = i.intValue();
} catch (NullPointerException e) {
System.out.println("Entering "+e.getStackTrace()[0]);
}
Utilisation d'objets d'instance pour des méthodes statiques.
Thread.currentThread().sleep(100);
Synchronisation sur un champ non final
synchronized(list) {
list = new ArrayList();
}
Copie inutile d'une chaîne constante
String s = new String("Hello world");
Appel inutile à String.toString ()
String s = "Hello";
String t = s.toString() + " World";
Appels à System.gc () pour libérer de la mémoire
Définition de la variable locale sur null pour libérer de la mémoire
// list is out of scope anyway.
list = null;
}
Utiliser ++ i au lieu d'i ++ pour des raisons de performances (ou toute autre micro-micro-optimisation)