无法从静态上下文引用非静态变量filepath

时间:2016-03-29 10:39:05

标签: java

我有一个简单的Java程序如下:

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:错误:无法从静态上下文引用非静态变量filepath

     

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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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 :(得分:1)

你永远不能访问静态字段内的非静态字段。

因为静态字段不需要对象,而非静态字段,所以静态字段永远不会知道非静态字段的状态。

所以您有两个选项,而不是make your field staticcreate an object before accessing it

 HelloWorldPrinter obj= new HelloWorldPrinter();
 FileInputStream in = new FileInputStream(new File(obj.getPath()));