【问题标题】:Android version checking and inlining of static final constantsAndroid 版本检查和静态最终常量的内联
【发布时间】:2012-09-07 16:13:04
【问题描述】:

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

查看Using the Version-Aware Component - Add the Switching Logic 以及Build.VERSION.SDK_INTBuild.VERSION_CODES 的使用让我感到困惑,好像这两个常量值都在编译时内联,这种方法是没有用的。我在这里错过了什么?

谢谢:)

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

【问题讨论】:

    标签: java android constants


    【解决方案1】:

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

    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);
    }
    

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

    【讨论】:

    • 太棒了-我应该检查一下来源,尤其是从我上面链接到的文档中额外单击一下-对不起! +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2010-12-28
    • 2015-08-02
    相关资源
    最近更新 更多