Android版本检查和静态最终常量的内联

时间:2012-09-07 16:13:04

标签: java android constants

我的理解是,在使用Java时,编译时会内联static final个常量。

查看Using the Version-Aware Component - Add the Switching Logic并使用Build.VERSION.SDK_INTBuild.VERSION_CODES会让我感到困惑,就好像这两个常量值在编译时都是内联的一样,这种方法也没用。我在这里缺少什么?

谢谢:)

编辑:他们在抽象类中的静态方法中是否更改了这个编译时内联?

1 个答案:

答案 0 :(得分:3)

内联的是可以在编译时确定的常量,例如:

private final int CONST = 1;

如果你检查source code(这是一个旧版本,但我认为它没有太大变化),常量看起来像这样:

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

这是getString方法:

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

因此在编译时无法确定常量。