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

    non-static variable br cannot be referenced from a static context

    Ciao a tutti.. ho un problema che da giorni mi blocca il lavoro.. e' qualche mese che scrivo codice java..

    ho costruito una classe che...
    import java.io.*;

    public class Action {
    public Action(File aFile)
    throws IOException
    {
    fis = new FileInputStream(aFile);
    isr = new InputStreamReader(fis);
    br = new BufferedReader(isr);
    }

    public static String getLine()
    {
    String line = br.readLine();
    return line;
    }

    private FileInputStream fis = null;
    private InputStreamReader isr = null;
    private BufferedReader br = null;
    private String line;
    }
    E' solo una parte di quello che dovra fare, ma ho dei problemi in fasi di compilazione del metodo getLine(); a me servirebbe avere dei metodi che muovano il buffer del file creato o lo ripristinano..

    ma se compilo ottengo:
    ./Action.java:14: non-static variable br cannot be referenced from a static context
    String line = br.readLine();
    Mi potreste aiutare? tutto mi serve perche' nel main ho un grande richiamo di questa funzione.. e ho bisogno di questo buffer anche separato in altri casi.. quindi necessito di avere un metodo che mi restituisce la stringa +1 del buffer e di uno che lo ripristini all'inizio.

    Ma non riesco.. attendo risposta.. ciao
    webpage: http://www.buferli.com

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    i metodi statici possono gestire solo variabili stiatiche, sostituisci static con String

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    L'errore in compilazione è dovuto al fatto che hai dichiarato il metodo getLine come static. Tu in pratica pensavi di fare una cosa del genere:
    codice:
    String line = Action.getLine();
    ma è sbagliato. All'interno di un metodo static, non esiste il "this" che fa riferimento alla istanza della classe, quindi non puoi utilizzare dei membri (variabili o metodi) di istanza!!!

    La soluzione è questa: togli static dal metodo getLine e poi fai:
    codice:
    Action act = new Action (...file...);
    String line = act.getLine ();
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    ora ho questo errore:
    FileTester.java:11: non-static method getLine() cannot be referenced from a static context
    String prv = Action.getLine();
    vi rincollo il main e la classe:

    Action.java
    import java.io.*;

    public class Action {
    public Action(File aFile)
    throws IOException
    {
    fis = new FileInputStream(aFile);
    isr = new InputStreamReader(fis);
    br = new BufferedReader(isr);
    }

    public String getLine()
    {
    // Action act = new Action("prova.txt");
    String line = br.readLine();
    return line;
    }

    private FileInputStream fis = null;
    private InputStreamReader isr = null;
    private BufferedReader br = null;
    private String line;
    }
    ~
    ecco il main:
    import java.io.*;

    public class FileTester {

    public static void main (String[] args) {

    File temporaneo = new File("prova.txt");

    Action doit = new Action(temporaneo);

    String prv = Action.getLine();

    System.out.println(prv);

    }
    }
    il nome delle variabili sono casuali..
    vi ringrazio per la pazienza
    webpage: http://www.buferli.com

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da HoLy-KniFe
    codice:
    Action doit = new Action(temporaneo);
    
    String prv = Action.getLine();
    No, devi usare una istanza di Action.
    codice:
    Action doit = new Action(temporaneo);
    
    String prv = doit.getLine();
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    aaah! che scemo..
    grazie mille
    webpage: http://www.buferli.com

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.