[英]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.