5

static finalJavaを使用する場合、コンパイル時に定数がインライン化されることを理解していました。

バージョン対応コンポーネントの使用を検討する-スイッチングロジックを追加し、コンパイル時にこれらの定数値の両方がインライン化されているかのように、の使用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 に答える