你无法做你想做的事.至少,不是你如何尝试这样做.没有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; }
>最后,使用类似于the other post的方法实现静态变量:
public class Test {
private static final CustomSparseArray myArray;
static {
myArray = new CustomSparseArray();
myArray.append(1, 1);
myArray.append(2, 5);
myArray.lock();
}
}
然后你的静态变量myArray中有一个不可修改的SparseArray.