Main

di il
5 risposte

Main

Buon pomeriggio

posso sembrare al quanto imbranato con l'uso di Java, ma ho il seguente problema:

dopo aver definito il main (public static void main(String [] arg){...}) voglio testare del codice ma il compilatore mi comunica che non posso far riferimento a metodi non statici dal tipo della classe (inteso come Nome della classe), suggerendomi di aggiungere al metodo richiamato static così mandando un oggetto all'interno del metodo chiamato in errore (il medesimo). (Testo errore: Cannot make a static reference to the not-static method Nome metodo from the type Nome classe)

Potete aiutarmi?

Grazie per l'attenzione.

P.S: so che è una richiesta stupida ma non so proprio cosa fare per ovviare al mio problema.

5 Risposte

  • Re: Main

    ^Matteo^ ha scritto:


    dopo aver definito il main (public static void main(String [] arg){...}) voglio testare del codice ma il compilatore mi comunica che non posso far riferimento a metodi non statici dal tipo della classe
    Dall'interno di un metodo static (quindi anche dal main() ), non puoi invocare direttamente un metodo "di istanza" ... così solo come metodoDiIstanza() (nemmeno se fosse in quella stessa classe). Un metodo di istanza deve essere appunto invocato su una istanza di quella classe che contiene il metodo, quindi: oggetto.metodoDiIstanza()

    P.S. mostra magari il codice.
  • Re: Main

    In seguito vi lascio il codice:

    public class Banca {
    ArrayList<ContoCorrente> ContiCorrenti;

    public Banca() {
    this.ContiCorrenti = new ArrayList<>();
    }

    public void addAccount(String name, double importo) {
    ContiCorrenti.add(new ContoCorrente(name, importo));
    }

    public static void main(String[] arg) {
    ContiCorrenti.addAccount("Nome", 100.99);
    }
  • Re: Main

    Usa i TAG CODE per il codice: mantengono la formattazione. Altrimenti non si capisce nulla
  • Re: Main

    ^Matteo^ ha scritto:


    
    	public void addAccount(String name, double importo) {
    		ContiCorrenti.add(new ContoCorrente(name, importo));
    	}
    
    	public static void main(String[] arg) {
    		ContiCorrenti.addAccount("Nome", 100.99);
    	}
    addAccount è un metodo "di istanza" (non è marcato static) e tra l'altro è tale perché usa una variabile di istanza (ContiCorrenti). Quindi va invocato su un reference ad un oggetto Banca.

    Quindi nel main:
    public static void main(String[] arg) {
        Banca banca = new Banca();   // crea un oggetto Banca
        banca.addAccount("Nome", 100.99);   // invoca addAccount su QUEL oggetto Banca
    }
  • Re: Main

    Grazie molte per la tua risposta andbin.
Devi accedere o registrarti per scrivere nel forum
5 risposte