我正在寻找Hibernate Search的源代码,偶然发现了一段我不太了解的代码。
有一个静态块调用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() {
}
}
这是GihHub
的链接答案 0 :(得分:2)
如果<span class="b1">FOO</span>
<span class="b2">FOO</span>
类已经加载,则private Vector3 newmousepos;
void Start()
{
m_Plane = new Plane(Vector3.up, transform.position);
}
void Update()
{
if (Input.GetMouseButton(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float enter = 0.0f;
if (m_Plane.Raycast(ray, out enter))
{
//Get the point that is clicked
Vector3 hitPoint = ray.GetPoint(enter);
transform.position =
Vector3.Lerp(transform.position,hitPoint,Time.deltaTime*5f);
}
}
不会执行任何操作。
如果未加载Version
类,则Version.touch();
将触发加载,而该加载又将触发Version
类中以下静态代码块的执行:>
Version.touch();
...,它将记录Hibernate Search版本。
因此仅在确保对Version
的调用之前确保Hibernate Search版本已记录。