我在我的工作文件的同一個文件夾下有一個StdDraw.java
,picture()
是StdDraw.java
中的一個方法。爲什麼我的導入在Java中失敗?
但是,我沒有加入這行來導入方法,通過
包提示StdDraw不存在
import StdDraw.picture
我怎麼可能做到呢?使用包?設置路徑?或有任何修改?我來自python,發現它有點奇怪。
我在我的工作文件的同一個文件夾下有一個StdDraw.java
,picture()
是StdDraw.java
中的一個方法。爲什麼我的導入在Java中失敗?
但是,我沒有加入這行來導入方法,通過
包提示StdDraw不存在
import StdDraw.picture
我怎麼可能做到呢?使用包?設置路徑?或有任何修改?我來自python,發現它有點奇怪。
你不能導入非靜態方法(只有類和靜態成員),你不必!
如果同時你的類生活在默認的包,那麼你應該能夠做到以下幾點,沒有任何import語句:
myStdDrawObject.picture(); // if picture is non-static
或
StdDraw.picture(); // if picture is static
還要注意,你不能對位於默認包中的類使用靜態導入。
我們如何導入靜態方法? –
示例'import static java.lang.Math.sqrt;' – aioobe
那麼我現在應該做什麼來使用該方法? – tonyabracadabra
如果您正在導入到同一包中的類中,那麼我們不需要使用任何導入。
如果你想導入方法進入類使用像下面。導入時不需要輸入方法名稱。
import packagename.StdDraw;
導入類後,該類的所有非靜態方法都可用於導入的類。
什麼時候應該使用靜態導入?只有在您想要聲明本地副本的常量或濫用繼承 (Constant Interface Antipattern)時才使用它。換句話說,當你需要頻繁訪問一個或兩個類的靜態成員時,使用它。如果 您過度使用靜態導入功能,則它可能會使您的程序 無法讀取且無法維護,從而導致您導入的所有靜態成員都會污染其名稱空間。你的代碼的讀者(包括你,在你寫了幾個月後幾個 )將不知道靜態成員 來自哪一類。從類中導入所有的靜態成員可能是 對可讀性特別有害;如果您只需要一個或兩個 成員,請單獨導入它們。使用得當,靜態導入 可以使你的程序更具可讀性,通過刪除 的樣板文件
重複名稱。
瞭解更多關於靜態導入:
https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html
我建議是對包念起來代碼是如何在Java中組織的。它在某種程度上類似於使用目錄結構的python,但在java中更多。也許這將幫助
即使你不包括這是目前在同一文件夾中的類進口,那麼你也可以創建對象,然後調用這個類的方法,也靜態方法。
您可以創建對象並調用非靜態方法。
StdDraw drawObj = new StdDraw();
drawObj.picture(); // if picture is non-static method
對於靜態方法,您只能使用類名來調用它。
StdDraw.picture(); // if picture is static method.
這真的很有幫助。 – tonyabracadabra
導入包時,不需要導入非靜態方法。你可以在這裏閱讀Java - Packages。這很容易解釋,我發現它在學習相同的概念時很有用。
您需要導入package.class,即com.abc.xyz.className。而且您不需要在導入中添加方法名稱。 –