5

在一个 Android 示例类中,有这个方法:

static {        
    addItem(...);
}

当我引用该类时,确实添加了这些项目。我从来没有见过这样的方法,a。这怎么叫和b。我想每当引用该类时(或第一次引用它)都会调用此方法?

4

3 回答 3

9

这被调用static initializer并且其中的代码仅在类加载时被调用一次。

于 2013-06-05T07:36:03.290 回答
1

是的,这是静态初始化块,只有在加载类时才会加载,如 Fouad 所说。如果您想在需要时执行静态块内的功能,则可以添加私有静态方法。看看这里

于 2013-06-05T07:42:22.337 回答
0

这不是一种方法。它是一个static initializer. 这是一种在类加载时静态地做一些工作的方法,比如设置一些数据。

考虑一下:

static List<String> neverChangingNames;

static {
  neverChangingNames = new ArrayList<String>();
  neverChangingNames.add("Thomas");
  neverChangingNames.add("Derek");
  neverChangingNames.add("Michael");
  neverChangingNames = Collections.unmodifiableList(neverChangingNames);
}
于 2013-06-05T07:36:24.843 回答