0
 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();
   }
 }

资源

4

7 回答 7

1

static {....}称为静态块。这些用于初始化您的静态成员。当类被加载/初始化时,静态块被执行。

在您的示例中,您正在使用静态块初始化地址和向量。

于 2012-09-28T06:56:51.253 回答
1
  1. 该类已加载
  2. 静态实例变量被初始化

    static Vector addresses;

    static PersistentObject persist;

  3. 然后执行静态块

    static{....}

于 2012-09-28T06:58:13.187 回答
1

当类第一次由ClassLoader. 这发生在第一次实例化该类的对象时,或者第一次访问该类的静态成员时。

静态块初始化器可以作为实例字段的构造器。构造函数使用适当的值初始化实例变量,其中静态块初始化程序将适当的值分配给static变量。

当您想通过执行代码(例如函数调用和循环)来初始化静态字段时,静态块很有用,这些代码不能放在简单的赋值语句中。

于 2012-09-28T06:58:20.137 回答
0

无需为类创建对象即可使用这些静态变量

静态向量地址;静态 PersistentObject 持久化;

如果我们使用静态{---}之类的东西。它被称为静态初始化器。它在创建对象之前被初始化

于 2012-09-28T07:00:10.937 回答
0

先初始化静态变量,再初始化静态块

于 2012-09-28T07:05:49.657 回答
0

那是一个静态初始化器,假设您只有一个类加载器,它将确保该代码将只执行一次(或 N 次对于 N 个类加载器)。

静态初始化器通常用于初始化Singleton对象的字段。

于 2012-09-28T06:56:21.127 回答
0

静态块将在此类(AddressBook)首次加载到 JVM 时执行。加载程序后,您的变量将可供使用。

于 2012-09-28T06:58:14.920 回答