我有一个简单的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));
我该如何解决这个问题?
答案 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 static
或create an object before accessing it
。
HelloWorldPrinter obj= new HelloWorldPrinter();
FileInputStream in = new FileInputStream(new File(obj.getPath()));