如何初始化一个静态SparseArray

我怎样才能初始化一个static ,不可修改的android.util.SparseArray实例?

Solutions Collecting From Web of "如何初始化一个静态SparseArray"

你不能做你想做的事情。 至less,不是你怎么试图做到这一点。 没有可执行的SparseArray是不可修改的。

但是,您可以创build一个。 就是这样:

  • 创build一个类,说CustomSparseArray<E> ,并且扩展SparseArray
  • 覆盖所有更改数组中元素的方法 ,并用如下代码replace它们:

     @Override public void append(int key, E value) { if (mLocked) return; // Maybe throw an exception super.append(key, value); } 
  • 然后,将一个成员variables添加到类中, boolean mLocked = false;
  • 接下来,你需要一个像下面这样的方法:

     public void lock() { mLocked = true; } 
  • 最后,使用类似于其他文章中的方法实现您的静态variables:

     public class Test { private static final CustomSparseArray<Integer> myArray; static { myArray = new CustomSparseArray<Integer>(); myArray.append(1, 1); myArray.append(2, 5); myArray.lock(); } } 

然后你的staticvariablesmyArray有一个不可修改的SparseArray

这是使用匿名类的更好方法:

 static final SparseIntArray myArray = new SparseIntArray() { { append(1, 2); append(10, 20); } }; 

这适用于我:

 static final SparseIntArray CMyArray = new SparseIntArray(); static { CMyArray.append(2, 4); CMyArray.append(8, 3); CMyArray.append(255, 1); } 

按照: https : //docs.oracle.com/javase/tutorial/java/javaOO/initial.html