java 中将执行多少次静态方法
How many times static methods will be executed in java
这与以下主题相关:
假设我在 class (TestClass) 中有一个静态方法,它查询数据库并将其存储在静态变量中,returns 它。
public static List<MyClass> getMyData()
{
setMyDataList(getMyNewData.execute());//DB Call and assigns the result to the static variable.
return myDataList;// returns the static variable
}
在这种情况下,假设 class A 调用 TestClass.getMyData()
获取数据并存储在 myDataList
中,然后 class B 调用 TestClass.getMyData()
, DB会不会又被打了?
静态块不等于静态方法。
In case of static block:
当 class 加载程序加载 class 时加载该静态块。除非你有多个 class 加载器,只有它执行一次并且你插入的数据将在所有实例之间共享。
Incase of static method :
它几乎就像一个实例方法,您会多次调用该方法。 Diff只是你不需要实例来调用它。
你根本不需要那个方法。将您的代码放在一个静态块中,在那里命中数据库并插入到列表中。您可以使用 static 访问该列表,并且不要忘记制作该列表 static
.
是的,它将再次 'hit'...
如果您不想这样做,您可能希望在静态 class 中有一个标志,指示该方法是否已被调用:
private static boolean methodAlreadyCalled = false;
public static List<MyClass> getMyData()
{
if (!methodAlreadyCalled)
{
setMyDataList(getMyNewData.execute());
methodAlreadyCalled = true;
}
return myDataList;
}
这与以下主题相关:
假设我在 class (TestClass) 中有一个静态方法,它查询数据库并将其存储在静态变量中,returns 它。
public static List<MyClass> getMyData()
{
setMyDataList(getMyNewData.execute());//DB Call and assigns the result to the static variable.
return myDataList;// returns the static variable
}
在这种情况下,假设 class A 调用 TestClass.getMyData()
获取数据并存储在 myDataList
中,然后 class B 调用 TestClass.getMyData()
, DB会不会又被打了?
静态块不等于静态方法。
In case of static block:
当 class 加载程序加载 class 时加载该静态块。除非你有多个 class 加载器,只有它执行一次并且你插入的数据将在所有实例之间共享。
Incase of static method :
它几乎就像一个实例方法,您会多次调用该方法。 Diff只是你不需要实例来调用它。
你根本不需要那个方法。将您的代码放在一个静态块中,在那里命中数据库并插入到列表中。您可以使用 static 访问该列表,并且不要忘记制作该列表 static
.
是的,它将再次 'hit'...
如果您不想这样做,您可能希望在静态 class 中有一个标志,指示该方法是否已被调用:
private static boolean methodAlreadyCalled = false;
public static List<MyClass> getMyData()
{
if (!methodAlreadyCalled)
{
setMyDataList(getMyNewData.execute());
methodAlreadyCalled = true;
}
return myDataList;
}