2010-09-07 55 views
0

我有一個類結構,如以下用於存儲靜態最終常量:訪問靜態字段:緩存在本地處理

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

如果我需要訪問一些C類的靜態常量(比如大約10到它們)線程,這兩種方法哪一種更好(更快)?它甚至會有所作爲嗎?這是一些與VM特定的優化嗎?我在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); 
} 

回答

2

第一個示例不會編譯,因爲您沒有初始化變量'temp'。既然你說你只能訪問靜態成員,實例化它將是毫無意義的。

靜態最終原語通常會由編譯器進行內聯,因此就性能而言,從何處獲得它絕對沒有區別。

+0

非常感謝你! – Samuh 2010-09-07 06:09:07