【发布时间】:2013-06-05 07:35:09
【问题描述】:
在 Android 示例类中有这个方法:
static {
addItem(...);
}
当我引用该类时,确实添加了这些项目。我从来没有见过这样的方法,a。这怎么叫和b。我想这个方法在类被引用(或第一次被引用)时被调用?
【问题讨论】:
在 Android 示例类中有这个方法:
static {
addItem(...);
}
当我引用该类时,确实添加了这些项目。我从来没有见过这样的方法,a。这怎么叫和b。我想这个方法在类被引用(或第一次被引用)时被调用?
【问题讨论】:
这称为static initializer,其中的代码仅在类加载时调用一次。
【讨论】:
是的,这是静态初始化块,只有在加载类时才会加载,如 Fouad 所说。如果您想在需要时执行静态块内的功能,则可以添加私有静态方法。看看here
【讨论】:
这不是一种方法。这是一个static initializer。这是一种在类加载时静态地做一些工作的方式,比如设置一些数据。
考虑一下:
static List<String> neverChangingNames;
static {
neverChangingNames = new ArrayList<String>();
neverChangingNames.add("Thomas");
neverChangingNames.add("Derek");
neverChangingNames.add("Michael");
neverChangingNames = Collections.unmodifiableList(neverChangingNames);
}
【讨论】: