是否有可能在靜態代碼塊內寫入構造函數?靜態塊內的構造函數
回答
不,你不能那樣做。構造函數始終是非靜態的,並且您只能訪問靜態塊中的靜態字段和成員。
至於靜態塊本身,它通常用於做一些類初始化,因爲這段代碼被添加到類的每個構造函數中。
靜態塊不是「添加到類的每個構造函數」 - 而是在類被加載時運行一次(在靜態上下文中)。您可能會考慮[*實例*初始化程序](http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#246032)塊,它們就像靜態塊一樣,但沒有'static'關鍵字。 – 2011-03-23 11:22:33
@Andrzej Doyle,謝謝你的改正,你說得對。 – 2011-03-23 11:33:37
@Andrzej感謝你,我實際上學到了一些新東西,並且有點用處。 – PeterT 2011-03-24 09:47:38
如果你的意思是寫在類的構造函數,而不是一個實例檢查:
不,它是不可能有靜態塊的內部構造。
您可以從靜態初始化程序中調用構造函數,還可以限制對該構造函數的訪問,從而只能從那裏調用該構造函數。
public class Foo {
static Foo singleton;
static {
singleton = new Foo();
}
private Foo() { }
}
- 1. Java - 靜態構造函數
- 2. Objective C靜態構造函數與動態構造函數
- 3. 構造函數和靜態函數
- 4. 靜態塊不構造
- 5. 公共構造函數和靜態構造函數
- 6. C#實例構造函數與靜態構造函數
- 7. 靜態構造函數的創建[Mono.Cecil]
- 8. 來自靜態構造函數的Database.SetInitializer
- 9. asp.net的MVC - 靜態構造函數
- 10. VB.NET中的靜態構造函數
- 11. Python靜態類型的構造函數?
- 12. 靜態構造函數的行爲(C#)
- 13. Java - 構造函數是靜態的嗎?
- 14. C中的靜態構造函數
- 15. 構造函數內的構造函數
- 16. 靜態構造函數有用
- 17. 靜態導入和構造函數
- 18. 靜態構造函數和繼承
- 19. 跟蹤靜態構造函數執行
- 20. 模仿C++靜態構造函數
- 21. C++靜態庫和構造函數
- 22. 靜態類C#構造函數OOP
- 23. 靜態構造函數之前反射
- 24. 總是調用靜態構造函數
- 25. 靜態構造函數,並用它
- 26. Assembly.GetCallingAssembly()和靜態構造函數?
- 27. 靜態構造函數重載?
- 28. C++線程靜態構造函數
- 29. 顯式調用靜態構造函數
- 30. Database.SetInitializer()在靜態構造函數中?
你能提供一個例子嗎? – 2011-03-23 10:37:46
你爲什麼需要這個?這是真正的問題還是隻是爲了好玩? – 2011-03-23 10:38:30
你想要一個靜態構造函數內的實例構造函數嗎? – Simeon 2011-03-23 10:42:33