我该如何初始化一个静态、不可修改的
android.util.SparseArray
实例?请保留HTML标记。android.util.SparseArray
实例?请保留HTML标记。这里有一种更好的方法,使用匿名类:
static final SparseIntArray myArray = new SparseIntArray() {
{
append(1, 2);
append(10, 20);
}
};
你试图做的事情是不可行的,至少你现在的尝试方式是行不通的。目前没有实现不可修改的 SparseArray
。
不过,你可以自己创建一个。具体方法如下:
CustomSparseArray<E>
,并让它继承 SparseArray
。覆盖掉所有会改变数组元素的方法,并将它们替换成以下内容:
@Override
public void append(int key, E value) {
if (mLocked)
return; // Maybe throw an exception
super.append(key, value);
}
boolean mLocked = false;
。然后,您需要一个类似以下的方法:
public void lock() { mLocked = true; }
最后,使用与其他帖子中相似的方法实现您的静态变量:
public class Test {
private static final CustomSparseArray<Integer> myArray;
static {
myArray = new CustomSparseArray<Integer>();
myArray.append(1, 1);
myArray.append(2, 5);
myArray.lock();
}
}
然后你在静态变量myArray
中有一个不可修改的SparseArray
。
static final SparseIntArray CMyArray = new SparseIntArray();
static {
CMyArray.append(2, 4);
CMyArray.append(8, 3);
CMyArray.append(255, 1);
}