Wie kann ich eine static
, nicht änderbare Instanz von android.util.SparseArray
initialisieren?So initialisieren Sie ein statisches SparseArray
Antwort
Sie können nicht tun, was Sie versuchen. Zumindest nicht, wie Sie es versuchen. Es gibt keine Implementierung von SparseArray
, die nicht änderbar ist.
Sie könnten jedoch eine erstellen. Hier ist, wie:
- Erstellen Sie eine Klasse, sagen
CustomSparseArray<E>
, und haben esSparseArray
zu verlängern. Aufschalten alle Methoden, die die Elemente in der Anordnung zu ändern, und ersetzen sie durch etwas wie folgt aus:
@Override public void append(int key, E value) { if (mLocked) return; // Maybe throw an exception super.append(key, value); }
- Dann fügen Sie in einer Membervariable auf die Klasse,
boolean mLocked = false;
. Als nächstes müssen Sie eine Methode wie folgt aus:
public void lock() { mLocked = true; }
Schließlich implementieren Ihre statischen Variablen ein ähnliches Verfahren wie die Verwendung 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(); } }
Dann Sie eine haben nicht änderbar SparseArray
in Ihrer static
Variable myArray
.
Genau das habe ich gesucht. Vielen Dank! – firyice
Hier ist ein besserer Weg, eine anonyme Klasse mit:
static final SparseIntArray myArray = new SparseIntArray() {
{
append(1, 2);
append(10, 20);
}
};
Dies funktioniert für mich:
static final SparseIntArray CMyArray = new SparseIntArray();
static {
CMyArray.append(2, 4);
CMyArray.append(8, 3);
CMyArray.append(255, 1);
}
Stand: https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
- 1. Wie ein statisches Objekt mit Feder initialisieren (@autowired)
- 2. So initialisieren Sie ein git-svn-Repository
- 3. So fügen Sie ein statisches Benutzerfeld zur Django-Abfrage hinzu
- 4. SparseArray, ob Schlüssel vorhanden
- 5. Wie konvertiert man ein SparseArray in ArrayList?
- 6. ein statisches constexpr Datenelement der Basisklasse Initialisieren durch ein statisches constexpr Datenelement der abgeleiteten Klasse unter Verwendung
- 7. Wann sollten Sie SparseArray setValueAt() verwenden?
- 8. So initialisieren Sie ein Objekt mit async-await-Muster
- 9. So initialisieren Sie ein IMimeMessage-Objekt von IStream
- 10. Erstellen Sie ein statisches Array mit Class.forName
- 11. Warum kann ich nicht initialisieren statisches Feld in C++
- 12. Bestücken ein statisches Element Container in C++
- 13. So initialisieren und aktualisieren Sie angegebene Submodule
- 14. Statisches Initialisieren von Array innerhalb von Struct nach Struct-Initialisierung
- 15. So initialisieren Sie SecureString für readonly
- 16. So initialisieren Sie die Liste mit Aufgabenobjekten
- 17. So initialisieren Sie AVAudioPlayer in Swift
- 18. So initialisieren Sie eine Konstante CLSID
- 19. So initialisieren Sie die jquery-Datentabelle
- 20. So initialisieren Sie Listenansicht mit Suchfilter
- 21. Wie kann ich ein statisches Const-Klassenmitgliedsobjekt initialisieren, das sich auf private Felder bezieht?
- 22. Erweiterungsmethoden für ein statisches Objekt
- 23. Warum muss ich ein nicht-statisches Array-Mitglied in einer Constexpr-Klasse initialisieren?
- 24. Instanz statisches Variable nicht in Verfahren initialisieren, wenn Methode über sie genannt wird
- 25. Wie implementiert man ein statisches projektweites Präferenzsystem?
- 26. Wie Ausnahme geworfen zu fangen, während ein statisches Element Initialisierung
- 27. Initialisieren Sie ein WPF-Kombinationsfeld in XAML?
- 28. Mock ein privates statisches Feld mit JMockit?
- 29. Wie können Sie ein sicheres statisches Singleton in Rust machen?
- 30. Kopieren Sie einen Zeiger auf ein statisches Array
Sie haben keine statischen Eigenschaften initialisieren. Was genau versuchst du zu tun? – Eric
@Eric das SparseArray Entsprechung dieser Antwort http://Stackoverflow.com/a/507658/884677 für eine statische Karte – firyice
@Eric ja, genau wie ich in dieser Frage, und die verknüpfte Frage/Antwort – firyice