簡體   English   中英

如何初始化靜態SparseArray

[英]How to initialize a static SparseArray

如何初始化android.util.SparseArraystatic ,不可修改的實例?

這是使用匿名類的更好方法:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM