2012-09-07 20 views
5

tenía entendido que static final y constantes están en línea durante el tiempo de compilación cuando se utiliza Java.versión de Android de cheques y procesos en línea de constantes static final

En cuanto a Using the Version-Aware Component - Add the Switching Logic y el uso de Build.VERSION.SDK_INT y Build.VERSION_CODES me confunde, como si los valores de estas dos constantes se coloca en línea durante el tiempo de compilación de este enfoque sería inútil. ¿Que me estoy perdiendo aqui?

Gracias :)

EDIT: ¿el hecho de que están en un método estático en un cambio de esta clase abstracta en tiempo de compilación procesos en línea?

Respuesta

3

Lo que se inline es constantes que se pueden determinar en tiempo de compilación, tales como:

private final int CONST = 1; 

Si marca la source code (que es una versión antigua, pero supongo que no ha cambiado mucho), las constantes vistazo de esta manera:

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

y este es el método getString:

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

Así que la constante no se puede determinar en tiempo de compilación.

+1

fantástico - que debería haber comprobado la fuente, especialmente porque está un clic extra de los documentos que he vinculado anteriormente - lo siento! +1 – Dori

Cuestiones relacionadas