0

renderscriptのソースを調べるだけです。36行目に間違いを見つけたと思います

private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;

double == である必要があると考えてください。ただし、十分なコーディング経験がないことを確認してください。

4

2 に答える 2

7

いいえ、バグでないと思います。の値に応じてまたはのLOG_ENABLEDいずれかに設定されます。LOGDLOGVDEBUG

関連するビットは次のとおりです。

public class RenderScript {
    static final String LOG_TAG = "libRS_jni";
    private static final boolean DEBUG  = false;
    @SuppressWarnings({"UnusedDeclaration", "deprecation"})
    private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;

そしてその最後の行は、概念的には次のものと同等です。

    private static final boolean LOG_ENABLED;
    if (DEBUG)
        LOG_ENABLED = Config.LOGD;
    else
        LOG_ENABLED = Config.LOGV;

実際には、

private static final boolean LOG_ENABLED == DEBUG ? Config.LOGD : Config.LOGV;

次の意味であるため、実際には意味がありません。

private static final boolean ((LOG_ENABLED == DEBUG)
                               ? Config.LOGD
                               : Config.LOGV);

変数名はまったく宣言されておらず、何かに割り当てられるべき値だけです。

于 2011-02-12T02:40:40.787 に答える
1

これは、Java で三項演算子がどのように機能するかについての単なる混乱です。あなたは次のようなことをしています:

int i;
boolean b;
int n1=2;
int n2=3;

i = b ? n1 : n2;

ここで、b は true または false に評価される式です。これを明確にするために、最初の要素の周りに括弧を使用していましたが、コードの一部を調べただけで、今はそれをやめたようです!

于 2011-02-12T12:53:00.740 に答える