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
无关的东西?