我遇到了一些我不知道如何解释的 Java 代码。
我标记的部分我不知道它是什么,它没有以我所拥有的知识到达我。
任何参考,所以我可以查一下?
代码:
package hibernate1;
import org. hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class SessionFactoryUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration()
.configure()
.buildSessionFactory();
} catch ( Throwable ex ) {
System.err.println(
"Err iniciando SessionFactory: " + ex
);
throw new ExceptionlnlnitializerError( ex );
}
} // static
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
我不明白结构。声明属性sessionFactory
,然后有一个块static
,我不知道那是什么。
以下结构:
... 被称为静态初始化块(大致翻译自英文:静态初始化块)。
在某种程度上,它的作用类似于类构造函数,但不是初始化类的实例成员,而是静态初始化块允许您初始化类的静态成员,这是构造函数无法做到的。
对于给定的类,静态初始化块只执行一次,无论您创建了多少实例。并且保证您在任何实例构造函数之前执行。
在您的示例中,静态初始化块用于初始化静态变量
sessionFactory
。SessionFactoryUtil
在您有机会使用它之前,该块只为该类执行一次。您可以在 Oracle 官方教程:静态初始化块中找到有关此结构的更多基本信息。
如果您想要更完整但更技术性的信息,可以直接在 Java 语言规范中找到: