2016-01-22 39 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

相關問題