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;
}