我的理解是,static final
在使用 Java 时,常量是在编译时内联的。
查看使用版本感知组件 - 添加切换逻辑和使用Build.VERSION.SDK_INT
并使Build.VERSION_CODES
我感到困惑,好像这两个常量值都在编译时内联,这种方法是无用的。我在这里想念什么?
谢谢 :)
编辑:它们在抽象类中的静态方法中的事实是否会改变这种编译时内联?
我的理解是,static final
在使用 Java 时,常量是在编译时内联的。
查看使用版本感知组件 - 添加切换逻辑和使用Build.VERSION.SDK_INT
并使Build.VERSION_CODES
我感到困惑,好像这两个常量值都在编译时内联,这种方法是无用的。我在这里想念什么?
谢谢 :)
编辑:它们在抽象类中的静态方法中的事实是否会改变这种编译时内联?
内联的是可以在编译时确定的常量,例如:
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);
}
所以无法在编译时确定常量。