8
votes

Comment initialiser un Static Sparsarray

Comment puis-je initialiser un statique , instance non modifiable de Android .util.sparsarsarray ?


4 commentaires

Vous n'initialisez pas les propriétés statiques. Qu'est-ce que vous essayez de faire exactement?


@ Arérique l'équivalent de la réponse de cette réponse Stackoverflow.com/a/507658/884677 pour une carte statique


@ Sciences oui, exactement comme je l'ai dit dans cette question et la question / réponse liée


Vous ferez mieux d'utiliser un hashmap à cette fin. J'ai essayé de résoudre le même problème.


3 Réponses :


9
votes

Vous ne pouvez pas faire ce que vous essayez de. Au moins, pas comment vous essayez de le faire. Il n'y a pas de mise en œuvre de SPARSARRAY code> non modifiable.

Cependant, vous pouvez en créer un. Voici comment: p>

  • Créez une classe, disons Customsparsarsarray code> et étendre SPARSARRAY code>. Li>.
  • remplacement toutes les méthodes fortes> qui modifient les éléments dans le tableau et remplacez-les par quelque chose comme ceci: P>

    public class Test {
        private static final CustomSparseArray<Integer> myArray;
        static {
            myArray = new CustomSparseArray<Integer>();
            myArray.append(1, 1);
            myArray.append(2, 5);
            myArray.lock();
        }
    }
    
  • Ensuite, ajoutez une variable de membre à la classe, Boolean MLOCKED = FALSE; CODE>. LI>
  • Ensuite, vous avez besoin d'une méthode comme ci-dessous: p>

    public void lock() { mLocked = true; }
    
  • Enfin, implémentez votre variable statique à l'aide d'une méthode similaire à L'autre message : P>

    @Override
    public void append(int key, E value) {
        if (mLocked)
            return; // Maybe throw an exception
        super.append(key, value);
    }
    


1 commentaires

Ceci est exactement ce que je cherchais. Merci!



15
votes

Voici un meilleur moyen d'utiliser une classe anonyme: xxx


0 commentaires

0
votes

0 commentaires