5

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

查看使用版本感知组件 - 添加切换逻辑和使用Build.VERSION.SDK_INT并使Build.VERSION_CODES我感到困惑,好像这两个常量值都在编译时内联,这种方法是无用的。我在这里想念什么?

谢谢 :)

编辑:它们在抽象类中的静态方法中的事实是否会改变这种编译时内联?

4

1 回答 1

3

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

private final int CONST = 1;

如果您检查源代码(它是一个旧版本,但我想它并没有太大变化),常量看起来像这样:

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

这是getString方法:

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

所以无法在编译时确定常量。

于 2012-09-07T16:23:11.573 回答