[英]How to initialize a static SparseArray
这是使用匿名类的更好方法:
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(); } }
然后你的static
变量myArray
有一个不可修改的SparseArray
。
这对我有用:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.