2016-07-15 3 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