import java.util.*;
import net.rim.vm.*;
public class AddressBook {
static Vector addresses;
static PersistentObject persist;
static {
// Hash of "net.rim.sample.AddressBook".
long KEY = 0xa3b3159378f59a29L;
persist = PersistentStore.getPersistentObject( KEY );
if( persist.getContents() == null ) {
persist.setContents( new Vector() );
persist.commit();
}
addresses = (Vector)persist.getContents();
}
}
void add( Address a ) {
addresses.addElement( a );
persist.commit();
}
}
答案 0 :(得分:1)
此static {....}
称为静态块。这些用于初始化静态成员。当加载/初始化类时,执行静态块。
在您的示例中,您使用静态块初始化地址和向量。
答案 1 :(得分:1)
静态实例变量已初始化
static Vector addresses;
static PersistentObject persist;
然后执行static block。
static{....}
答案 2 :(得分:1)
当ClassLoader
首次加载类时,将执行静态块初始值设定项。这是在第一次实例化该类的对象时,或者第一次访问该类的静态成员时发生的。
静态块初始值设定项可以作为实例字段的构造函数。构造函数使用适当的值初始化实例变量,其中静态块初始值设定项为static
变量分配适当的值。
当您想通过执行代码(例如函数调用和循环)来初始化静态字段时,静态块很有用,这些代码不能放在简单的赋值语句中。
答案 3 :(得分:0)
这是Static Initializer,假设您只有一个类加载器,它将确保该代码只执行一次(或N次加载器N次)。
静态初始值设定项通常用于初始化Singleton个对象的字段。
答案 4 :(得分:0)
当此类(AddressBook)首次加载到JVM时,将执行静态块。 加载程序后,您的变量可供使用。
答案 5 :(得分:0)
可以在不创建类
的对象的情况下使用这些静态变量静态矢量地址; static PersistentObject persist;
如果我们使用静态{---}之类的东西。它被称为静态初始化器。它在创建对象之前初始化
答案 6 :(得分:0)
首先初始化静态变量,然后是静态块