static
の変更不可能なインスタンスを初期化するにはどうすればよいandroid.util.SparseArray
ですか?
7568 次
3 に答える
15
匿名クラスを使用するより良い方法は次のとおりです。
static final SparseIntArray myArray = new SparseIntArray() {
{
append(1, 2);
append(10, 20);
}
};
于 2013-12-19T02:43:31.040 に答える
9
あなたがしようとしていることをすることはできません。少なくとも、あなたがそれをやろうとしている方法ではありません。変更不可能な実装はありません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(); } }
次に、 variable に unmodifiableSparseArray
がありstatic
ますmyArray
。
于 2013-05-06T01:43:32.190 に答える
0
これは私のために働く:
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
于 2017-03-06T09:23:23.087 に答える