static
les membres ( static
champs ou static
méthodes) en Java sont associés à leur classe respective plutôt qu'aux objets de cette classe. Le code suivant tente d'accéder à un champ statique sur une null
référence.
public class Main
{
private static final int value = 10;
public Main getNull()
{
return null;
}
public static void main(String[] args)
{
Main main=new Main();
System.out.println("value = "+main.getNull().value);
}
}
Bien que main.getNull()
retourne null
, cela fonctionne et s'affiche value = 10
. Comment fonctionne ce code?
Main main = null; main.getNull().value
.
new Thread[]{}[-1].sleep(10);
où sleep () est une méthode statique. Cela réussissait sur certaines anciennes versions de Java.