代码之家  ›  专栏  ›  技术社区  ›  asteri

静态{}块的目的/优点是什么?[副本]

  •  3
  • asteri  · 技术社区  · 12 年前

    可能重复:
    Static Initialization Blocks

    在回顾一些旧代码时,我发现了一些以前从未见过的奇怪语法。经过一些研究,我现在知道我看到的是 static{} 块(如果我理解正确的话)是在初始化时执行的代码块。

    我不明白的是拥有这样一个功能的好处,或者人们可能想在什么时候使用它。静态块似乎只是包含规则的代码行,这些代码行可以属于任何规则的静态 方法 ,那么让它在初始化时自动运行(除了为程序员节省一行代码来调用方法之外)有什么好处呢?为什么这很重要或有用?

    4 回复  |  直到 7 年前
        1
  •  4
  •   Chris B    12 年前

    正如他们在 Java Tutorials 以下为:

    如果初始化需要一些逻辑(例如,错误处理或for循环来填充复杂数组),那么简单的赋值是不够的。实例变量可以在构造函数中初始化,在构造函数中可以使用错误处理或其他逻辑。为了为类变量提供相同的功能,Java编程语言包括静态初始化块。

        2
  •  3
  •   user1610075    12 年前

    正如您所说,静态bloc是在初始化时执行的。 例如,假设你有一个非常复杂的静态字段

    private static List<ThingsDownloadedByTheNet> ls;
    

    只是在做

    private static List<ThingsDownloadedByTheNet> ls = new ArrayList<ThingsDownloadedByTheNet>
    

    这还不够,因为您可能还想设置列表元素。 因此,您需要执行一个静态块,在其中执行一些初始化(在本例中,您连接到服务器并填充列表元素)

        3
  •  2
  •   duffymo    12 年前

    可以将其视为静态变量的构造函数。它使您有机会在任何人使用它们之前对它们进行初始化。

        4
  •  0
  •   m0skit0    12 年前

    static{} 块在加载类时执行。您可以使用它来初始化静态字段或调用静态方法。不能使用任何方法来替换此行为,因为类“没有构造函数”。实际上,您可以将其视为“类构造函数”。