是否有可能在静态代码块内写入构造函数?静态块内的构造函数
回答
不,你不能那样做。构造函数始终是非静态的,并且您只能访问静态块中的静态字段和成员。
至于静态块本身,它通常用于做一些类初始化,因为这段代码被添加到类的每个构造函数中。
静态块不是“添加到类的每个构造函数” - 而是在类被加载时运行一次(在静态上下文中)。您可能会考虑[*实例*初始化程序](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. 来自静态构造函数的Database.SetInitializer
- 8. C中的静态构造函数
- 9. Python静态类型的构造函数?
- 10. VB.NET中的静态构造函数
- 11. asp.net的MVC - 静态构造函数
- 12. Java - 构造函数是静态的吗?
- 13. 显式调用静态构造函数
- 14. 静态构造函数有用
- 15. 静态和默认构造函数
- 16. 跟踪静态构造函数执行
- 17. 模仿C++静态构造函数
- 18. 静态类C#构造函数OOP
- 19. C++线程静态构造函数
- 20. C#泛型静态构造函数
- 21. 总是调用静态构造函数
- 22. 静态构造函数,并用它
- 23. Database.SetInitializer()在静态构造函数中?
- 24. Assembly.GetCallingAssembly()和静态构造函数?
- 25. 静态构造函数之前反射
- 26. Python类构造函数(静态)
- 27. 如何模仿构造函数或静态块C
- 28. 构造函数内的try/catch块
- 29. 如何从静态内部类构造函数创建Spring bean?
- 30. PHP的构造函数和静态函数
你能提供一个例子吗? – 2011-03-23 10:37:46
你为什么需要这个?这是真正的问题还是只是为了好玩? – 2011-03-23 10:38:30
你想要一个静态构造函数内的实例构造函数吗? – Simeon 2011-03-23 10:42:33