我遇到了以下代码:
public final class MainActivity extends ActivityBase
{
static
{
Logger.create();
}
...
}
像这样的区域是什么static
意思?
使用这种语法有什么好处?
官方文档
静态初始化块是用大括号 { } 括起来并以 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
}
}
私有静态方法的优点是,如果您需要重新初始化类变量,它们可以在以后重用。
每当加载(导入)类时,static
块都会执行。它通常用于初始化静态变量等。
它是一个静态初始化器。它允许人们通过使用一组语句来初始化static
变量(甚至),而不仅仅是一个表达式。static final
在这种情况下,只要第一次引用该类,它就会执行一项活动,即使没有创建该类的实例。