Accesso a un membro non-statico da un metodo statico
Non si scappa! Tanto un programmatore esperto che conosce Java come le sue tasche, tanto un programmatore alle prime armi commettono degli errori mentre programmano. Le cause possono essere varie e anche il tipo di errori, ma alcuni sono più frequenti degli altri. Questo che considereremo in questo post è molto frequente ed è un errore molto più comune nei programmatori Java alle prime armi. Il metodo main infatti è dichiarato static questo significa che non serve creare un’istanza di quella classe per invocare il metodo (ed è giusto che sia così, in quanto sarà il primo metodo che verrà invocato). Si consideri questo codice:
public class StaticDemo
{
// Questo è un membro non-static
public String non_static = "pippo";
// Questo è un metodo static
public static void main (String args[])
{
/* Qui provo a leggere il valore di una variabile
non-static da un metodo static (main) */
System.out.println ("Valore:" + non_static );
}
}
Errore di compilazione! In questo caso, infatti, sto cercando di accedere ad un membro non-static (come l’attributo non_static) della classe da un metodo static (come il main), per risolvere devo creare un’istanza della classe. Ecco come fare:
public class StaticDemo
{
// Questo è un membro non-static
public String non_static = "pippo";
// Questo è un metodo static
public static void main (String args[])
{
// Qui creo un'istanza della classe
StaticDemo demo = new StaticDemo();
/* Ora grazie alla notazione dotted posso accedere
alla variabile non statica */
System.out.println ("Valore:" + demo.non_static );
}
}
Tutto qui! Sebbene molto frequente quest’errore non è insidioso in quanto viene immediatamente rilevato in fase di compilazione:
non-static variable [identificativo] cannot be referenced from a static context
If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments
Non c’è ancora nessun commento.
Lascia un commento