2015-02-11 3 views
-2

У меня есть перечисление определяется какКак получить строку перечисления из значения в Java

static enum tcp_status { /* As defined in ./include/net/tcp_states.h */ 
    TCP_ESTABLISHED , 
    TCP_SYN_SENT, 
    TCP_SYN_RECV, 
    TCP_FIN_WAIT1, 
    TCP_FIN_WAIT2, 
    TCP_TIME_WAIT, 
    TCP_CLOSE, 
    TCP_CLOSE_WAIT, 
    TCP_LAST_ACK, 
    TCP_LISTEN, 
    TCP_CLOSING, /* Now a valid state */ 
    TCP_MAX_STATES /* Leave at the end! */ 
} 

Я что возвращать строку, когда я прохожу целое значение как 3, я хотел бы получить TCP_SYN_RECV. Как я могу это достичь?

+2

tcp_status.values ​​() [index] .toString() –

+0

Обратите внимание, что индексы начинаются с 0, поэтому на самом деле * целочисленное значение, подобное 3 *, будет 'TCP_FI N_WAIT1' – TheLostMind

ответ

1

Вы должны использовать Enum::values() и Enum::ordinal()

public static String getStringFromOrdinal(int ordinal) { 
    for(TcpStatus status : TcpStatus.values()) { 
    if(status.ordinal() == ordinal) { 
     return status.toString() 
    } 
    } 
    return null; 
} 

сокращенный вариант, но может бросить исключение

public static String getStringFromOrdinal(int ordinal) { 
    return TcpStatus.values()[ordinal].toString(); 
} 

По словам TheLostMind, имейте в виду, что первое значение будет доступен с 0

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

  • Нет связанных вопросов^_^