2014-01-21 1 views
1

Многие Java-методы Java возвращают числовые постоянные значения. При регистрации или показе значений пользователю я хотел бы автоматически преобразовать эти значения в строки (что-то похожее на Windows API FormatMessage()/FORMAT_MESSAGE_FROM_SYSTEM). Однако я не мог найти способ сделать это, кроме переключения всех возможных значений и создания соответствующих строк.Получение строкового представления чисел java числовых констант/кода ошибки

Например: android.net.wifi.p2p.WifiP2pManager.ActionListener.onFailure() возвращает целое значение: ERROR (0), P2P_UNSUPPORTED (1), BUSY (2). Я хотел бы преобразовать число в соответствующую строку. Я мог бы написать кожух переключателя, например, как это:

public void onFailure(int reason) { 
    String strReason; 
    switch (reason) { 
    case WifiP2pManager.BUSY: strReason = "BUSY"; break; 
    case WifiP2pManager.ERROR: strReason = "ERROR"; break; 
    case WifiP2pManager.P2P_UNSUPPORTED: strReason = "P2P_UNSUPPORTED"; break; 
    default: strReason = Integer.toString(reason); 
    } 
    Log.d(TAG, "onFailure failed, reason=" + strReason);    
} 

Но я хотел бы избежать, особенно, когда есть более чем 3 возможных возвращаемых значений.

Я пробовал много искать на StackExchange и других сайтах, но все результаты были связаны с целым синтаксическим разбором.

Любой способ достичь того, что я пытаюсь сделать?

+0

_ «Я мог бы написать случай с переключателем, например:« _ Нет, вы не могли, так как Android не поддерживает Java 7 (если вы не используете Android KitKat) –

+1

Я действительно использую Android KitKat, и это действительно работает. .. это не работает в предыдущих версиях? Интересный ... (Java-новичок) – Sambusak

+1

@ ZouZou Switches - это функция Java в течение длительного времени, вам не нужна Java 7 для их использования. – AxiomaticNexus

ответ

0

Функция, которую вы ищете, просто не существует. У вас нет выбора, кроме как придерживаться подхода switch.

+0

"Нет выбора"? Никто здесь не слышал о «HashMap»? – ajb

+1

Уверен, что карта будет работать, но я не хочу ее вручную заполнять. – Sambusak

+0

@ajb switch, hashmap, bugs bunny, это не имеет значения. Ему все же приходится придумывать собственное строковое представление и сопоставлять их с int, чего он пытается избежать. – AxiomaticNexus

Смежные вопросы