|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
problema main[java]
quando faccio qualcosa del genere
public Classe{ costruttore metodi..... public static void main(String[]args){ Classe=new Classe();}} Mi dice che non posso utilizzare un oggetto o metodo non statico in un contesto statico e sono costretto a fare il metodo main in una classe a parte però vedo in giro che molti lo inseriscono come nell esempio su indicato a me.Dove sbaglio? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il breve esempio che riporti è corretto.
Codice:
public class Classe {
public static void main(String[] args) {
Classe istanzaDi = new Classe();
}
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
come mai mi da quell' errore?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il compilatore rileva nel tuo codice l'uso di un identificatore (il nome di un campo o di un metodo) che non può essere risolto se non preponendo il riferimento "this".
Poichè tale riferimento non esiste in un contesto statico, ti arriva il messaggio di errore: in un contesto statico non puoi usare qualcosa che richieda la preposizione di this. Ad esempio: Codice:
public class Classe {
private int valore;
public static void main(String[] args) {
int x = valore;
}
}
Si dice che certe cose siano membri di (istanza) per sottolineare il fatto che non è possibile usarli senza passare per chi li possieda. Per valore, il possessore è una qualsiasi istanza di Classe. Questa istanza non è specificata nell'enunciato in rosso. Se l'istanza a cui appartiene un membro non è specificata, allora il compilatore usa il valore "this". Cioè dice: int x = this.valore In un contesto statico non esiste un'istanza corrente, non c'è un this. E salta fuori quel messaggio di errore. E' corretto invece dire: Codice:
public class Classe {
private int valore;
public static void main(String[] args) {
Classe istanza = new Classe();
int x = istanza.valore;
}
}
E' anche corretto dire: Codice:
public class Classe {
private static Classe istanza = new Classe();
private int valore;
public static void main(String[] args) {
int x = istanza.valore;
}
}
"instanza" è dichiarato "static", esiste in un contesto statico. Nell'altro contesto statico, quello del metodo main, l'uso di "istanza" è quindi pienamente legittimo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:17.



















