谁能解释一下这个static的用法?

03-11-08 lyojbuilder
有一段程序中的static的用法不是很明白

public class test{

private static ServiceLocator service=null;

static{

service=new ServiceLocator();

}

这个service实例为什麽放到static中,有什麽做用呢?它不是开始已经被声明成了static的了吗?

lyojbuilder
2003-11-10 12:43
自己提前 :(

无道
2003-11-10 13:11
当JVM加载类时,static定义的块被执行,也就是说:当加载类时,不需要实例化该类就可以执行该类的操作。常见的例子就是使用Class.forName()方法加载JDBC驱动程序。

lyojbuilder
2003-11-10 16:11
多谢回复:

这在Server-Locator模式中有什麽用处呢?这个static的操作本身不就是生成一个ServerLocator的实例吗?如果static块儿中是个方法还比较合适吧

无道
2003-11-10 19:39
的确在这里的效果与直接赋值区别不大,只是个人书写的习惯不同,这种写法的人通常喜欢把静态变量的初始化操作集中在一起来写,这种方式适合于书法与初始化顺序相关的操作,如Decorator模式的对象初始化。

猜你喜欢
2Go 1 2 下一页