2015-06-09 38 views
0

我在我的工作文件的同一個文件夾下有一個StdDraw.javapicture()StdDraw.java中的一個方法。爲什麼我的導入在Java中失敗?

但是,我沒有加入這行來導入方法,通過

包提示StdDraw不存在

import StdDraw.picture 

我怎麼可能做到呢?使用包?設置路徑?或有任何修改?我來自python,發現它有點奇怪。

+0

您需要導入package.class,即com.abc.xyz.className。而且您不需要在導入中添加方法名稱。 –

回答

4

你不能導入非靜態方法(只有類和靜態成員),你不必!

如果同時你的類生活在默認的包,那麼你應該能夠做到以下幾點,沒有任何import語句:

myStdDrawObject.picture(); // if picture is non-static 

StdDraw.picture();   // if picture is static 

還要注意,你不能對位於默認包中的類使用靜態導入。

+0

我們如何導入靜態方法? –

+0

示例'import static java.lang.Math.sqrt;' – aioobe

+0

那麼我現在應該做什麼來使用該方法? – tonyabracadabra

1

如果您正在導入到同一包中的類中,那麼我們不需要使用任何導入。

如果你想導入方法進入類使用像下面。導入時不需要輸入方法名稱。

import packagename.StdDraw; 

導入類後,該類的所有非靜態方法都可用於導入的類。

什麼時候應該使用靜態導入?只有在您想要聲明本地副本的常量或濫用繼承 (Constant Interface Antipattern)時才使用它。換句話說,當你需要頻繁訪問一個或兩個類的靜態成員時,使用它。如果 您過度使用靜態導入功能,則它可能會使您的程序 無法讀取且無法維護,從而導致您導入的所有靜態成員都會污染其名稱空間。你的代碼的讀者(包括你,在你寫了幾個月後幾個 )將不知道靜態成員 來自哪一類。從類中導入所有的靜態成員可能是 對可讀性特別有害;如果您只需要一個或兩個 成員,請單獨導入它們。使用得當,靜態導入 可以使你的程序更具可讀性,通過刪除 的樣板文件

重複名稱。

瞭解更多關於靜態導入:

https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html

+3

你可以導入靜態方法。 – CKing

+0

就目前而言,你的回答是不正確的。 – CKing

1

我建議是對包念起來代碼是如何在Java中組織的。它在某種程度上類似於使用目錄結構的python,但在java中更多。也許這將幫助

Java Tutorial- Packages

1

即使你不包括這是目前在同一文件夾中的類進口,那麼你也可以創建對象,然後調用這個類的方法,也靜態方法。

您可以創建對象並調用非靜態方法。

StdDraw drawObj = new StdDraw(); 
drawObj.picture(); // if picture is non-static method 

對於靜態方法,您只能使用類名來調用它。

StdDraw.picture(); // if picture is static method. 
+0

這真的很有幫助。 – tonyabracadabra

1

導入包時,不需要導入非靜態方法。你可以在這裏閱讀Java - Packages。這很容易解釋,我發現它在學習相同的概念時很有用。