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

Dor*_*ori 5 java android constants

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

查看使用版本感知组件 - 添加切换逻辑以及使用Build.VERSION.SDK_INTBuild.VERSION_CODES混淆我,就好像这两个常量值在编译时内联,这种方法将毫无用处.我在这里错过了什么?

谢谢 :)

编辑:它们是否在抽象类中的静态方法中更改此编译时内联?

ass*_*ias 4

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

private final int CONST = 1;
Run Code Online (Sandbox Code Playgroud)

如果你检查源代码(它是旧版本,但我认为它没有太大变化),常量如下所示:

public static final String SDK = getString("ro.build.version.sdk");
Run Code Online (Sandbox Code Playgroud)

这是getString方法:

private static String getString(String property) {
    return SystemProperties.get(property, UNKNOWN);
}
Run Code Online (Sandbox Code Playgroud)

所以这个常量不能在编译时确定。