我遇到了以下代码:
public final class MainActivity extends ActivityBase
{
static
{
Logger.create();
}
...
}
这样的static
区域是什么意思?
使用这种语法有什么好处?
答案 0 :(得分:4)
官方文件
静态初始化块是包含在其中的正常代码块 大括号,{},并以static关键字开头。这是一个例子:
static {
// whatever code is needed for initialization goes here }
一个类可以有任意数量的静态初始化块,它们可以 出现在课堂体内的任何地方。运行时系统保证 静态初始化块按它们出现的顺序调用 在源代码中。
有静态块的替代方法 - 您可以编写私有
静态方法:
class Whatever {
public static varType myVar = initializeClassVariable();
private static varType initializeClassVariable() {
// initialization code goes here
}
}
私有静态方法的优点是,如果需要重新初始化类变量,它们可以在以后重用。
答案 1 :(得分:2)
每当加载(导入)类时,static
块都将执行。它通常用于初始化静态变量等等。
答案 2 :(得分:1)
这是static initializer。它允许通过使用一组语句而不仅仅是表达式来初始化static
变量(甚至是static final
)。
在这种情况下,即使没有创建类的实例,它也会在首次引用类时执行活动。