Come è possibile inizializzare una static
, istanza non modificabile di android.util.SparseArray
?Come inizializzare uno SparseArray statico
risposta
Non puoi fare ciò che stai tentando di fare. Almeno, non come stai tentando di farlo. Non esiste un'implementazione di SparseArray
che non sia modificabile.
Tuttavia, è possibile crearne uno. Ecco come:
- creare una classe, dicono
CustomSparseArray<E>
, e farlo estendereSparseArray
. Override tutti i metodi che cambiano gli elementi dell'array, e sostituirli con qualcosa di simile:
@Override public void append(int key, E value) { if (mLocked) return; // Maybe throw an exception super.append(key, value); }
- Quindi, aggiungere in una variabile membro alla classe,
boolean mLocked = false;
. Successivamente, è necessario un metodo come il seguente:
public void lock() { mLocked = true; }
Infine, implementare la variabile statica utilizzando un metodo simile a quello in the other post:
public class Test { private static final CustomSparseArray<Integer> myArray; static { myArray = new CustomSparseArray<Integer>(); myArray.append(1, 1); myArray.append(2, 5); myArray.lock(); } }
Quindi si dispone di un immodificabile SparseArray
nella variabile static
myArray
.
Questo è esattamente quello che stavo cercando. Grazie! – firyice
Ecco un modo migliore utilizzando una classe anonima:
static final SparseIntArray myArray = new SparseIntArray() {
{
append(1, 2);
append(10, 20);
}
};
Questo funziona per me:
static final SparseIntArray CMyArray = new SparseIntArray();
static {
CMyArray.append(2, 4);
CMyArray.append(8, 3);
CMyArray.append(255, 1);
}
secondo: https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
- 1. Ordina SparseArray in Android
- 2. Come inizializzare uno SparseVector in Eigen
- 3. come inizializzare ArrayList statico <myclass> in una linea
- 4. Scala: come ereditare uno "slot statico"?
- 5. Come inizializzare una classe?
- 6. Test unità SparseArray utilizzando JUnit (utilizzando JVM)
- 7. Perchè non riesco a inizializzare campo statico in C++
- 8. Pattern comune per inizializzare un singleton su uno sfondo Thread
- 9. Come inizializzare le informazioni sull'autorizzazione
- 10. un modo idiomatico per inizializzare uno Scala ArrayBuffer?
- 11. Android: Esiste un idioma per l'iterazione tramite SparseArray
- 12. blocchi di codice statico
- 13. Come inizializzare var?
- 14. Come inizializzare la struttura?
- 15. Java: come inizializzare String []?
- 16. Come devo inizializzare jQuery?
- 17. Come inizializzare un unique_ptr
- 18. come inizializzare l'oggetto stringstream
- 19. Come inizializzare un CLSID costante
- 20. inizializzatore di campo statico readon vs inizializzazione del costruttore statico
- 21. Come inizializzare i logger correttamente?
- 22. Inizializzazione del vettore statico
- 23. Impossibile inizializzare org.eclipse.jst.j2ee.project.facet.IJ2EEFacetConstants classe
- 24. Come inizializzare un NSMutableArray nell'obiettivo C?
- 25. Quale funzione viene utilizzata per inizializzare il membro della classe statico?
- 26. Come inizializzare IDictionary nel costruttore?
- 27. Come inizializzare jsTree utilizzando JSON
- 28. Come inizializzare l'oggetto con CodeDOM?
- 29. Come inizializzare java.util.date su empty
- 30. Come inizializzare la grafica g?
Non inizializzare le proprietà statiche. Cosa stai cercando di fare esattamente? – Eric
@Eric l'equivalente SparseArray di questa risposta http://stackoverflow.com/a/507658/884677 per una mappa statica – firyice
@Eric sì, esattamente come ho dichiarato in questa domanda e la domanda/risposta collegata – firyice