static {// some code}是什么意思?

时间:2013-01-18 19:08:54

标签: java

  

可能重复:
  Static Initialization Blocks

以下内容对java有什么意义?

static {                                        
  WritableComparator.define(IntPair.class, new Comparator());
}

2 个答案:

答案 0 :(得分:9)

这意味着static initialization block将在类加载时执行。

  

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

答案 1 :(得分:1)

这意味着在加载类型之前,在调用任何构造函数之前,但在运行任何字段初始化程序之后,该块中的代码将运行一次。

请注意,您无法在静态块中设置任何实例字段。那里没有this的概念,就像在任何其他静态方法中一样。