我的理解是,在使用Java时,编译时会内联static final
个常量。
查看Using the Version-Aware Component - Add the Switching Logic并使用Build.VERSION.SDK_INT
和Build.VERSION_CODES
会让我感到困惑,就好像这两个常量值在编译时都是内联的一样,这种方法也没用。我在这里缺少什么?
谢谢:)
编辑:他们在抽象类中的静态方法中是否更改了这个编译时内联?
答案 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);
}
因此在编译时无法确定常量。