具有静态初始化参数的Hashset

时间:2013-07-23 05:11:18

标签: java

我正在浏览一些类,我已经找到了一个这样的hashset实现

public static HashSet<String> set = new HashSet<String>();

    static{
        set.add("abc");
        set.add("def");
        set.add("eghi");

    }

static block中,我只想知道这种模式称为static初始化。这意味着,当jvm启动时,我们的设置值为initialized。< / p>

请告知。

3 个答案:

答案 0 :(得分:2)

   StaticInitializer:
        static Block

如果您看到JLS-8.7

  

在类初始化时执行类中声明的静态初始化程序(第12.4.2节)。与类变量的任何字段初始值设定项(第8.3.2节)一起,静态初始值设定项可用于初始化类的类变量。

注意:

  

使用类变量,其声明在使用后以文本形式出现有时会受到限制,即使这些类变量在范围内也是如此。有关控制类变量的正向引用的精确规则,请参见§8.3.2.3。

答案 1 :(得分:2)

静态块仅在类加载时被调用一次,无论您创建的该类型的对象有多少。

静态块将无法访问非静态实例变量或方法。

您可以使用静态块在初始化期间处理异常。

在加载类期间甚至在调用构造函数之前执行静态块这一事实,此功能可用于单例模式

答案 2 :(得分:0)

是的,这是静态初始化块。

关于静态初始化块:

静态初始化块是用大括号{}括起来的正常代码块,前面是static关键字。

何时加载:

一个类可以有任意数量的静态初始化块,它们可以出现在类体中的任何位置。运行时系统保证按照它们在源代码中出现的顺序调用静态初始化块。