在查看一些旧代码时,我发现了一些我以前从未见过的奇怪语法。在做了一些研究之后,我现在知道我看到的是static{}
块(如果我理解的话)是在初始化时执行的代码块。
我不明白的是拥有这样一个功能的优势,或者当一个人可能想要使用它时。看起来静态块只包含可能属于任何常规静态方法的常规代码行,因此在初始化时自动运行它的优点是什么(除了为程序员保存一行代码打电话给方法)?为什么这很重要或有用?
答案 0 :(得分:4)
正如他们在Java Tutorials中所说的那样:
如果初始化需要一些逻辑(例如,错误处理或for循环来填充复杂的数组),则简单的赋值是不合适的。实例变量可以在构造函数中初始化,其中可以使用错误处理或其他逻辑。为了为类变量提供相同的功能,Java编程语言包括静态初始化块。
答案 1 :(得分:2)
将其视为静态变量的构造函数。它让你有机会在任何人使用它们之前初始化它们。
答案 2 :(得分:2)
正如您所说,静态块在初始化时执行。 假设您有一个非常复杂的静态字段,例如
private static List<ThingsDownloadedByTheNet> ls;
刚做
private static List<ThingsDownloadedByTheNet> ls = new ArrayList<ThingsDownloadedByTheNet>
还不够,因为您可能也想设置列表元素。 因此,您执行一个静态块,在其中执行一些初始化(在这种情况下,您连接到服务器并填充列表元素)
答案 3 :(得分:0)
static{}
块。您可以使用它来初始化静态字段或调用静态方法。您不能使用任何方法来替换此行为,因为类“没有构造函数”。实际上,您可以将其视为“类构造函数”。