Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA] METODI STATICI non-static method cannot be referenced from a static context

    il seguente programma java


    public class printer
    {
    public void print(int x)
    {
    System.out.println(x);
    }
    public static void main (String[] arg)
    {
    int n= 13;
    print(n);
    }
    }

    genera un errore in compilazione del tipo

    printer.java:10: non-static method print(int) cannot be referenced from a static context

    è evidente che il metodo print deve essere dichiarato come statico.. ma come mai? cos'è che l'obbliga a essere statico ?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    il fatto che tu stia provando ad invocarlo da un metodo statico (main è dichiarato statico).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    codice:
    public class printer
    {
    public void print(int x)
    {
    System.out.println(x);
    }
    public static void main (String[] arg)
    {
    int n= 13;
    printer p = new printer();
    p.print(n);
    }
    }

  4. #4
    ok capito
    dalla risposta di nether.. volevo chiedere

    tu hai costruito un riferimento all'oggetto che ha al suo interno un metodo omonimo, giusto?

    sul discorso della staticita o meno di un metodo però mi sorgono dei dubbi.. qual'è la differenza sostanziale tra un metodo statico e uno non stastico (dinamico) :master:


    se io quel metodo lo invocavo sempre con un printer(n) ma da un metodo nn statico avrebbe funzionato vero ?

  5. #5
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    1) non ho capito la cosa sul metodo omonimo.. se ti riferisci alla riga "printer p = new printer()", ho istanziato normalmente un oggetto di classe "printer" chiamando il suo costruttore di default "new printer()"

    2) un metodo statico lo puoi chiamare con nomeClasse.metodo() senza dover prima istanziare un oggetto di quella classe (come ho fatto io nel codice)

    3) si, avrebbe funzionato

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Nicolablu
    sul discorso della staticita o meno di un metodo però mi sorgono dei dubbi.. qual'è la differenza sostanziale tra un metodo statico e uno non stastico (dinamico) :master:
    Il termine "dinamico" non c'entra nulla.
    Parlando in generale, un membro 'static' appartiene alla classe, un membro non 'static' appartiene alla istanza della classe.
    codice:
    public class Prova {
        static private int comune = 5;
        private int valore;
    
        public Prova (int v) {
            valore = v;
        }
    }
    
    ...
    Prova p1 = new Prova (5);
    Prova p2 = new Prova (8);
    Prova p3 = new Prova (3);
    avrai che di variabile 'comune' ne hai 1 sola (appartiene alla classe) mentre ci saranno 3 variabili 'valore' con valore distinti, ognuna associata ad una istanza della classe.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.