繁体   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