2016-01-22 42 views
-1

我构建了一个GUI类,并获取了我想在此GUI类中打开的文件的路径名。该路径回来为:如何在获取路径名的另一个类中打开文件

public String filePath = "C\blablah"; 

我想实际上在另一个类中,“网络”类打开我的文件,所以我写了下面的代码来获取网络类路径字符串:

String readFile = GUI.file(); 
Path file = Paths.get(readFile, "Network"); 

我尝试了几种不同的方法,但它不工作,我认为这一个会工作,但它回来与

“不能从使静态参考非静态方法文件路径() 类型GUI“

这些类都不是我的主,所以我不能在“Network”类中实例化GUI。

请原谅,如果这是一个新手问题。

编辑:

这是我在GUI类写访问的文件路径在其他类别

public String file(){ 
    return filePath; 
} 
+0

通过方法调用或构造函数将'filePath'值传递给另一个类,请参见[将信息传递给方法或构造函数](https://docs.oracle.com/javase/tutorial/java/javaOO/ arguments.html) – MadProgrammer

+0

我试过了,它返回“无法从类型GUI对非静态方法filePath()进行静态引用” – cachemoi

+0

您是否[搜索](http://www.google.co.il/)搜索?q =不能+使+ + +静态+参考+ + + +非静态+方法)的错误? – user1803551

回答

0

好吧,你想在这里做什么方法来访问静态变量“文件路径“来自你的GUI类,但这个变量不是静态的。您可以通过在变量名称前面添加关键字static来更改它。

但我想,你实际上不想从类GUI访问一个静态变量,而是一个GUI对象的变量。在这种情况下,没有办法,只能使用特定路径创建GUI对象,并从网络类访问它。

另外请注意,这是一个更好的做法,用getter-method访问类变量。

+0

'static'永远不是跨类通信的解决方案,只是引入了更多的危害,使得更多的不可预测和危险 – MadProgrammer

+1

如果只有一个可能文件路径,在编译时已知,那么静态**可能是适当的,但正如@DavidR所说,这是不太可能的。 是否有很多GUI的实例,每个都有不同的路径?或者是否有一个“中央”GUI对象在其生命周期中获取路径?如果后者是你可以从任何地方访问的单身人士可能会有所帮助。 – BryanT

相关问题