static
membri (campi static
o metodi static
) in Java sono associati alla rispettiva classe anziché agli oggetti di questa classe. Il seguente codice tenta di accedere a un campo statico su un riferimento null
.Campi statici su riferimento null in Java
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);
}
}
Sebbene main.getNull()
rendimenti null
, funziona e display value = 10
. Come funziona questo codice?
Forse questa domanda può aiutare a capire che: [Come mai invocare un metodo (statico) su un riferimento null non genera NullPointerException?] (Http://stackoverflow.com/questions/3293353/ how-come-invoking-a-static-metodo-on-a-null-riferimento-doesnt-throw-nullpointe? rq = 1) –
Per divertimento, prova 'Main main = null; main.getNull(). value'. –
Questo mi ricorda 'new Thread [] {} [- 1] .sleep (10);' dove sleep() è un metodo statico. Questo ha avuto successo su alcune vecchie versioni di Java. – hertzsprung