在java中执行静态方法的次数

时间:2015-10-05 12:57:39

标签: java static-methods

这与以下主题相关:

https://stackoverflow.com/a/17141660/1120126

假设我在类(TestClass)中有一个静态方法,它查询数据库并将其存储在静态变量中,然后返回它。

public static  List<MyClass> getMyData()
    {   
     setMyDataList(getMyNewData.execute());//DB Call and assigns the result to the static variable. 
     return myDataList;// returns the static variable
    }

在这种情况下,假设A类调用TestClass.getMyData()获取数据并存储在myDataList中,然后B类调用TestClass.getMyData(),数据库是否会再次被击中?

2 个答案:

答案 0 :(得分:2)

静态块不等于静态方法。

Incase of static method : 

当类加载器加载该类时,会加载该静态块。除非您有多个类加载器,否则只有一次执行,并且您插入的数据将在所有实例中共享。

static

它几乎就像一个实例方法,你会多次打这个方法。 Diff只是您不需要实例来调用它。

你根本不需要这种方法。将您的代码放在静态块中,然后将命中数据放入列表中。您可以使用静态访问该列表,并且不要忘记创建该列表// Create the event var event = new CustomEvent("DOMContentLoaded", { "detail": "Content Loaded trigger" }); // Dispatch/Trigger/Fire the event document.dispatchEvent(event);

答案 1 :(得分:2)

是的,它会被击中&#39;再次...

如果您不想要,您可能希望在静态类中有一个标志,指示该方法是否已被调用:

private static boolean methodAlreadyCalled = false;

public static List<MyClass> getMyData()
{
    if (!methodAlreadyCalled)
    {
        setMyDataList(getMyNewData.execute());
        methodAlreadyCalled = true;
    }
    return myDataList;
}