Java 每当我调用一个函数时,是否会自动在类中调用一个静态函数?

Java 每当我调用一个函数时,是否会自动在类中调用一个静态函数?,java,static,Java,Static,所以我有一个公共类,在这个类中有几个公共函数,包括一个静态方法 public class TestVocabValidator { static { getEnumList( vocabList.values() ); } public static Iterator<String> getVocabEntries(String x) { return null; } } 公共类TestVocabValidator{ 静态{getEnu

所以我有一个公共类,在这个类中有几个公共函数,包括一个静态方法

public class TestVocabValidator {

    static { getEnumList( vocabList.values() ); }

    public static Iterator<String> getVocabEntries(String x) {
        return null;
    }

}
公共类TestVocabValidator{
静态{getEnumList(vocabList.values());}
公共静态迭代器getVocabEntries(字符串x){
返回null;
}
}

无论何时调用函数
getVocabEntries()
,静态方法都会自动被调用吗?

无论何时调用该静态方法都不会。第一次加载该类时,在本例中是第一次调用该方法时,将调用静态块。

不是每次调用该静态方法时。第一次加载该类时,在本例中是第一次调用该方法时,将调用静态块。

当引用类的名称并加载该类时,静态块(例如,
static{…}
)将执行一次

静态方法(例如,
getVocabEntries
)在每次调用时都会执行

引用类的名称并加载类时,静态块(例如,
static{…}
)执行一次


静态方法(例如,
getVocabEntries
)在每次调用时都会执行

所以如果我调用getVocaBenteries函数,静态函数会被初始化,对吗?我认为词汇表有点混乱。在Java中,“函数”或多或少是“方法”的同义词(Java8爱好者现在可能会宣称我是人民的敌人)。我怀疑您所引用的“函数”是一个静态块。如前所述,当类被加载时,它只执行一次。@user3851283第一部分不是静态函数,它是一个静态初始值设定项,当类第一次被加载时,它将被调用,即使没有调用
getVocaBenteries
。是的,Andreas说的。同样在这种情况下,如果
getEnumList
static
且变量
vocabList
static
并在
静态
块之前声明(否则它不会编译),加载类时,
getEnumList
将在
vocabList
上调用一次。@因此,在我当前编写的文件中,如果我不调用“getVocablEntries”函数,如何确保调用此静态初始值设定项?因此,如果我调用getVocablEntries函数,静态函数将被初始化,对吧?我觉得词汇有点混乱。在Java中,“函数”或多或少是“方法”的同义词(Java8爱好者现在可能会宣称我是人民的敌人)。我怀疑您所引用的“函数”是一个静态块。如前所述,当类被加载时,它只执行一次。@user3851283第一部分不是静态函数,它是一个静态初始值设定项,当类第一次被加载时,它将被调用,即使没有调用
getVocaBenteries
。是的,Andreas说的。同样在这种情况下,如果
getEnumList
static
且变量
vocabList
static
并在
静态
块之前声明(否则它不会编译),加载类时,
getEnumList
将在
vocabList
上调用一次。@在我当前编写的文件中也是如此,如果我不调用“GetVocaBenteries”函数,如何确保调用此静态初始值设定项?您在对Mena回答的评论中指出,如果不调用静态初始值设定项,您的SQL代码将失败。
getEnumList(vocabList.values())
做什么?为什么
TestVocabValidator
的工作是初始化与
TestVocabValidator
无关的内容?您在对Mena答案的评论中指出,如果不调用静态初始值设定项,您的SQL代码将失败。
getEnumList(vocabList.values())
做什么?为什么
TestVocabValidator
的工作是初始化与
TestVocabValidator
无关的东西?