Jak zainicjować static
, niemodyfikowalną instancję z android.util.SparseArray
?Sposób inicjowania statycznego SparseArray
Odpowiedz
Nie możesz zrobić tego, czego próbujesz. Przynajmniej nie tak, jak próbujesz to zrobić. Nie ma implementacji SparseArray
, która jest niemodyfikowalna.
Można go jednak utworzyć. Oto jak:
- Tworzenie klasy, powiedzmy
CustomSparseArray<E>
, i rozciągaćSparseArray
. Zastąp wszystkie metody które zmieniają elementy w tablicy, a następnie je zastąpić czymś tak:
@Override public void append(int key, E value) { if (mLocked) return; // Maybe throw an exception super.append(key, value); }
- Następnie dodać w zmiennej członka do klasy
boolean mLocked = false;
. Następnie trzeba metodę jak następuje:
public void lock() { mLocked = true; }
Wreszcie wdrożyć zmiennej statycznej stosując metodę podobną do w 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(); } }
to masz niezmodyfikowana SparseArray
w Twojej static
zmienna myArray
.
To jest dokładnie to, czego szukałem. Dziękuję Ci! – firyice
Oto lepszy sposób za pomocą anonimowej klasy:
static final SparseIntArray myArray = new SparseIntArray() {
{
append(1, 2);
append(10, 20);
}
};
Działa to dla mnie:
static final SparseIntArray CMyArray = new SparseIntArray();
static {
CMyArray.append(2, 4);
CMyArray.append(8, 3);
CMyArray.append(255, 1);
}
wg: https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
- 1. Właściwy sposób inicjowania danych
- 2. Jak powrócić ze statycznego bloku inicjowania w java
- 3. Dostęp do prywatnych funkcji statycznych podczas inicjowania elementu statycznego.
- 4. Której funkcji używa się do inicjowania statycznego członka klasy?
- 5. Sposób deklarowania wątku lokalnego statycznego w szablonie
- 6. Sposób inicjowania stałej wartości CLSID
- 7. Sortuj SparseArray w Androidzie
- 8. Android SparseArray z klawiszem String?
- 9. SparseArray, sprawdź czy klucz istnieje
- 10. Jak przekonwertować SparseArray na ArrayList?
- 11. Jaki jest właściwy sposób inicjowania QList?
- 12. Jaki jest poprawny sposób inicjowania wskaźnika wc?
- 13. Elegancki sposób inicjowania i rozszerzania tablicy javascript
- 14. Czy istnieje krótszy sposób inicjowania QByteArray?
- 15. Prawidłowy sposób inicjowania struct w konstruktorze klasy
- 16. Sposób inicjowania mapy w maszynie do pisania
- 17. sposób inicjowania odwołania do obiektu constexpr
- 18. Czy istnieje sposób statycznego wykonywania wiązania C#?
- 19. Dostęp do statycznego atrybutu statycznego typu ogólnego
- 20. Składnia statycznego konstruktora w Actionscript-3?
- 21. Prawidłowy sposób inicjowania mapy i usuwania w C++
- 22. Czy istnieje sposób inicjowania obiektu Vue zachowującego początkowy kod HTML?
- 23. Czy istnieje bardziej zwięzły sposób inicjowania pustych tablic wielowymiarowych?
- 24. Jaki jest poprawny sposób inicjowania tablicy elementów z listą inicjalizatora?
- 25. Czy istnieje szybszy/krótszy sposób inicjowania zmiennych w strukturze Rust?
- 26. W jaki sposób kpisz z inicjowania zestawu narzędzi JavaFX?
- 27. Jaki jest najlepszy sposób inicjowania dyktowania dyktowanych w Pythonie?
- 28. Czy jest to bezpieczny sposób inicjowania wątku [ThreadStatic]?
- 29. Co to jest poprawny sposób inicjowania aplikacja Elm
- 30. Elegancki sposób inicjowania pustej tablicy String w Javie
Nie zainicjować właściwości statycznych. Co dokładnie próbujesz zrobić? – Eric
@Erric SparseArray odpowiednik tej odpowiedzi http://stackoverflow.com/a/507658/884677 dla statycznej mapy – firyice
@Eric tak, dokładnie tak, jak stwierdziłem w tym pytaniu, oraz powiązane pytanie/odpowiedź – firyice