2010-09-07 6 views
0

I ont une structure de classe, comme suit pour le stockage des constantes finales statiques:Accès champ statique: la mise en cache des poignées localement

public final class A{ 
    //..list of constants 
public final class B{ 
    //..list of constants 
    public final class C{ 
    // ..list of constants 
    } 
} 
} 

Si j'ai besoin d'accéder à des constantes statiques de la classe C (par exemple environ 10 à eux) dans certains le fil, lequel des deux approches est le meilleur (plus rapide)? Cela fait-il même une différence? Est-ce une optimisation qui est spécifique à VM? Je courais ce code sur la plate-forme Android:

void doIt(){ 
A.B.C temp; 
S.O.P(temp.FIELD1); 
S.O.P(temp.FIELD2); 
... 
S.O.P(temp.FIELD10); 
} 

//OR 

void doIt(){ 
S.O.P(A.B.C.FIELD1); 
S.O.P(A.B.C.FIELD2); 
... 
S.O.P(A.B.C.FIELD10); 
} 

Répondre

2

Le premier exemple ne compile pas, puisque vous n'êtes pas initialiser la variable « temp ». Et puisque vous avez dit que vous n'accédez qu'aux membres statiques, l'instancier serait complètement inutile.

Une primitive statique statique sera normalement incorporée par le compilateur, donc en ce qui concerne les performances, cela ne fait absolument aucune différence là où vous l'obtenez.

+0

merci beaucoup! – Samuh