2016-03-29 5 views
2

У меня есть простая программа Java следующим образом:Non-статическая переменная путь_к_файлу не может ссылаться из статического контекста

public class HelloWorldPrinter { 
    String filepath; 

    public void setPath(String path){ 
     this.filepath = path; 
    } 

    public static void main(String[] args) throws PrintException, IOException { 
     FileInputStream in = new FileInputStream(new File(filepath)); 
    } 
} 

я получаю следующее сообщение об ошибке:

HelloWorldPrinter.java:40: error: non-static variable filepath cannot be referenced from a static context

FileInputStream in = new FileInputStream(new File(filepath));

Как я могу это исправить ?

ответ

3

Одним из вариантов является создание экземпляра HelloWorldPrinter:

public static void main(String[] args) throws PrintException, IOException { 
    HelloWorldPrinter printer = new HelloWorldPrinter(); 
    printer.setPath("path/to/file"); 

    FileInputStream in = new FileInputStream(new File(printer.getPath())); 
} 
1

вы никогда не можете получить доступ к нон статического поля в статическом поле.

потому что статическое поле не нуждается в объекте, а нестатический делает, поэтому статическое поле никогда не узнает состояние нестатического поля.

поэтому у вас есть два варианта, а не make your field static, или create an object before accessing it.

HelloWorldPrinter obj= new HelloWorldPrinter(); 
FileInputStream in = new FileInputStream(new File(obj.getPath())); 
Смежные вопросы

 Смежные вопросы