static 与私有构造函数

来源:互联网 发布:md5java解密算法 编辑:程序博客网 时间:2024/05/21 23:36

  java中static是一个很有用的方法。

  首先我们来看一个例子:

 

首先我们来分析Test这个类,这个类中,有一个私有的构造函数,并且有一个static 的方法,在Rua这个类中,到底会有什么样的打印结果?

这个是得到的结果:

 

为了更好的说明这一点,继续看下面的两个类:

打印出的内容为:

 

这说明两次所得到的实例是相同的。即单例模式。

 

所以,在这里不难看出,在static方法内,只运行了一次,并且形成了三个单例,每个单例之间都相互不影响,在Test类中,分别构造了三个不同的实例,这三个实例间相互不会影响。

这里还有一个问题,注意看注释1,这里没有使用共有构造函数,而是使用了私有构造函数,那么如果在这里使用了共有构造函数会有什么影响呢?首先,使用自由构造函数,这个类不可以初始化,即不可以被new出来,如果没有显示的声明构造函数,那么系统会为默认的使用该类的共有构造函数,因此在这里,既然需要使用到单例,那么在这不可避免的就需要使用到私有构造函数,因为,如果使用了共有构造函数,那么可能造成的影响:该类可以被new出来,这样的话,就不能被保证该实例会被这样而使用。

 

这里还有一点可能会发生疑问的就是,如果构造函数和static同时存在的时候,系统到底先执行哪一个呢?

系统首先会运行static内部的内容。

 

这里能够引出的问题:大多数人应该看过hibernate的源码,在这里贴一段过来

在这里,我们便可以看出点hibernate对于数据库连接的眉目了,

在接下来的文章中我会就hibernate对数据库的连接,性能方面写出一点我自己的看法。