2011-03-23 151 views
1

是否有可能在静态代码块内写入构造函数?静态块内的构造函数

+0

你能提供一个例子吗? – 2011-03-23 10:37:46

+4

你为什么需要这个?这是真正的问题还是只是为了好玩? – 2011-03-23 10:38:30

+0

你想要一个静态构造函数内的实例构造函数吗? – Simeon 2011-03-23 10:42:33

回答

1

不,你不能那样做。构造函数始终是非静态的,并且您只能访问静态块中的静态字段和成员。

至于静态块本身,它通常用于做一些类初始化,因为这段代码被添加到类的每个构造函数中。

+4

静态块不是“添加到类的每个构造函数” - 而是在类被加载时运行一次(在静态上下文中)。您可能会考虑[*实例*初始化程序](http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#246032)块,它们就像静态块一样,但没有'static'关键字。 – 2011-03-23 11:22:33

+0

@Andrzej Doyle,谢谢你的改正,你说得对。 – 2011-03-23 11:33:37

+0

@Andrzej感谢你,我实际上学到了一些新东西,并且有点用处。 – PeterT 2011-03-24 09:47:38

0

不,它是不可能有静态块的内部构造。

1

您可以从静态初始化程序中调用构造函数,还可以限制对该构造函数的访问,从而只能从那里调用该构造函数。

public class Foo { 
    static Foo singleton; 

    static { 
     singleton = new Foo(); 
    } 
    private Foo() { } 
}