fir*_*ice 8 java collections android initialization sparse-array
如何初始化一个static不可修改的实例android.util.SparseArray?
Pet*_*ter 15
这是使用匿名类的更好方法:
static final SparseIntArray myArray = new SparseIntArray() {
{
append(1, 2);
append(10, 20);
}
};
Run Code Online (Sandbox Code Playgroud)
你无法做你想做的事.至少,不是你如何尝试这样做.没有任何实现SparseArray是不可修改的.
但是,您可以创建一个.这是如何做:
CustomSparseArray<E>并让它扩展SparseArray.覆盖更改数组中元素的所有方法,并用以下内容替换它们:
@Override
public void append(int key, E value) {
if (mLocked)
return; // Maybe throw an exception
super.append(key, value);
}
Run Code Online (Sandbox Code Playgroud)boolean mLocked = false;.接下来,您需要一个如下方法:
public void lock() { mLocked = true; }
Run Code Online (Sandbox Code Playgroud)最后,使用类似于其他帖子的方法实现您的静态变量:
public class Test {
private static final CustomSparseArray<Integer> myArray;
static {
myArray = new CustomSparseArray<Integer>();
myArray.append(1, 1);
myArray.append(2, 5);
myArray.lock();
}
}
Run Code Online (Sandbox Code Playgroud)然后你SparseArray的static变量中有一个不可修改的myArray.
| 归档时间: |
|
| 查看次数: |
6367 次 |
| 最近记录: |