我怎样才能初始化一个static
不可修改的实例android.util.SparseArray
?
问问题
7568 次
3 回答
15
这是使用匿名类的更好方法:
static final SparseIntArray myArray = new SparseIntArray() {
{
append(1, 2);
append(10, 20);
}
};
于 2013-12-19T02:43:31.040 回答
9
你不能做你想做的事。至少,不是你试图这样做的方式。没有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(); } }
然后你的变量中有一个不可修改SparseArray
的。static
myArray
于 2013-05-06T01:43:32.190 回答
0
这对我有用:
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
于 2017-03-06T09:23:23.087 回答