Java Hibernate搜索:静态块调用版本#touch()的目的是什么

Java Hibernate搜索:静态块调用版本#touch()的目的是什么,java,hibernate,hibernate-search,Java,Hibernate,Hibernate Search,我正在研究Hibernate搜索的源代码,无意中发现了一段我不太理解的代码 有一个静态块调用org.hibernate.search.engine.Version类的静态方法。我怀疑这可能与JIT有关,但不确定如何 你能解释一下吗 public class ImmutableSearchFactory implements ExtendedSearchIntegratorWithShareableState, WorkerBuildContext { static {

我正在研究Hibernate搜索的源代码,无意中发现了一段我不太理解的代码

有一个静态块调用org.hibernate.search.engine.Version类的静态方法。我怀疑这可能与JIT有关,但不确定如何

你能解释一下吗

public class ImmutableSearchFactory implements ExtendedSearchIntegratorWithShareableState, WorkerBuildContext {

    static {
        Version.touch();
    }

版本类别:

public final class Version {

    private Version() {
        //now allowed
    }

    public static String getVersionString() {
        return Version.class.getPackage().getImplementationVersion();
    }

    static {
        LoggerFactory.make( MethodHandles.lookup() ).version( getVersionString() );
    }

    public static void touch() {
    }
}

这里是指向的链接,如果
Version
类已加载,
Version.touch()不会做任何事情


如果未加载
Version
类,
Version.touch()
将触发加载,这反过来将触发
版本
类中以下静态代码块的执行:

    static {
        LoggerFactory.make( MethodHandles.lookup() ).version( getVersionString() );
    }
。。。它将记录Hibernate搜索版本

所以调用
Version.touch()仅用于确保在Hibernate搜索引导之前记录Hibernate搜索版本