2016-07-15 25 views
-2

重複フラグは使用しません。Android「定数式が必要です」

package org.zzjbook.unit; 
public class Unit { 
    private static int flag = 1; 
    public final static synchronized int getFlag() { 
     return flag++; 
    } 
} 

私はフラグを取得するために上記の関数を使用します。

import static org.zzjbook.unit.Unit.getFlag; 
public class Out { 
    private final static int PRINT = getFlag(); 

    private Handler handler = new Handler() { 
     public void handleMessage(Message msg) { 
      switch (msg.what) { 
       case PRINT: 
        break; 
      } 
     } 
    } 
} 

IDEはエラーを示します。 "定数式が必要です"。 このミスを解決する方法を教えてください。

+0

何行目ですか?また、AtomicIntegerを使用してみませんか? –

+0

@TimCastelijnsなぜAtomicIntegerですか? – Blackbelt

+0

'PRINT'変数の意味は何ですか?それは私に非常に疑わしいと思う... – shmosel

答えて

2

switchケースには、言われたように、定数式が必要です。代わりにifに変更してください。

public void handleMessage(Message msg) { 
    if (msg.what == PRINT) { 
     //... 
    } 
} 
+0

なぜ私は "final"を使用しますが、定数ではありません – zzjbook

+1

@zzjbook定数はコンパイル時に知られていなければなりません。あなたのコード中の 'PRINT'の値は' Out'がいつ初期化されるかによって決まります。 – shmosel

関連する問題