2012-09-07 13 views
5

यह मेरी समझ थी कि static final स्थिरांक जावा का उपयोग करते समय संकलन समय पर रेखांकित हैं।स्थिर अंतिम स्थिरांक की एंड्रॉइड संस्करण की जांच और इनलाइनिंग

Using the Version-Aware Component - Add the Switching Logic को देखते हुए और Build.VERSION.SDK_INT के उपयोग और Build.VERSION_CODES मुझे confuses, के रूप में इन दोनों स्थिरांक मान संकलन समय पर inlined कर रहे हैं इस दृष्टिकोण बेकार हो सकता है। मुझे यहां क्या समझ नहीं आ रहा है?

धन्यवाद :)

संपादित करें: करता है तथ्य यह है कि वे एक अमूर्त वर्ग परिवर्तन में एक स्थिर विधि में हैं इस संकलन समय इनलाइनिंग?

private final int CONST = 1; 

यदि आप इसे source code (यह एक पुराने संस्करण है, लेकिन मैं इसे नहीं किया है अब काफी कुछ बदल लगता है), स्थिरांक देखो:

उत्तर

3

क्या inlined है जैसे स्थिरांक कि संकलन समय पर निर्धारित किया जा सकता है, इस तरह:

private static String getString(String property) { 
    return SystemProperties.get(property, UNKNOWN); 
} 
:

public static final String SDK = getString("ro.build.version.sdk"); 

और यह getString विधि है

तो स्थिर समय संकलन समय पर निर्धारित नहीं किया जा सकता है।

+1

शानदार - मुझे स्रोत की जांच करनी चाहिए, विशेष रूप से ऊपर से जुड़े दस्तावेज़ों से एक अतिरिक्त क्लिक के रूप में - क्षमा करें! +1 – Dori

संबंधित मुद्दे