我知道靜態類型和其他類型之間的區別,但我不確定在哪裏使用哪個。現在我在所有地方使用靜態類型來避免對象實例化。以這種方式使用它是一個好主意嗎?在所有地方使用靜態類型有什麼特別的缺點?使用靜態類型是個好主意嗎?
編輯
你怎樣稱呼這個爲static String staff
?
我知道靜態類型和其他類型之間的區別,但我不確定在哪裏使用哪個。現在我在所有地方使用靜態類型來避免對象實例化。以這種方式使用它是一個好主意嗎?在所有地方使用靜態類型有什麼特別的缺點?使用靜態類型是個好主意嗎?
編輯
你怎樣稱呼這個爲static String staff
?
這是一個很好的問題。通常你應該而不是使用static
方法/變量,除非你確定它是一個正確的應用程序。在面向對象編程(OOP)中,對象封裝了數據和行爲。通常,*實例方法用於處理對象的數據。
Static
只應將方法/變量用於與任何特定對象無關的功能。 static
的有效申請的一個好例子是Math.random()
。
有關實例和靜態方法/變量的一些注意事項:
羅伯特馬丁編寫了一本好書,涵蓋了這個主題是Clean Code。強烈推薦。
*實例方法與靜態方法相反。它們與類實例關聯,而不是類本身。
解決您的編輯,假設這是一個變量,你訪問它是這樣的:
MyClass.staff = "bob, george, and linda";
System.out.println(MyClass.staff);
編輯:這裏是我另一個論壇上做了一段時間後,與後一些很好的答案。這是一個PHP論壇,但這些概念仍然適用。
當有一個對象的多個實例,靜態類型的變量和函數會在所有實例共享。
任何應用程序中的大多數邏輯都將被模塊化,並將在某些共享字段上運行。這就是大多數方法都是非靜態的原因。在這種情況下,'fields'可以與'firstName'等一樣基本。但在其他情況下,'fields'是其他類的實例,如DataAccess(DAO)類。
變量即字段幾乎不應該是靜態的,除非它們是「常量」。
一個很好的例子,在這裏您將使用靜態方法是轉換字符串,例如一類:
public class StringUtil{
public static String convertToHex(String orig){
}
}
Java沒有任何東西被稱爲「靜態類型」。你的意思是*靜態內部類*?你能給出一個代碼示例嗎? – 2011-05-24 00:33:30
Java是一種面向對象的語言。實例化對象的能力在那裏,因爲這是一個很好的模式。當然,靜態對象/方法也有自己的位置。如果問題只是你是否應該使用對象,那麼答案是'是'。 退房http://en.wikipedia.org/wiki/Design_Patterns的一些例子... – 2011-05-24 00:37:40
@格雷格Hewgill:檢查我的編輯。 – Deepak 2011-05-24 00:43:15