我在Java中的Enum
,我把它變成enumerated annotations
這樣的:如何驗證字符串是枚舉的註解或不
public static final String PING = "ping";
public static final String PING_BACK = "ping.back";
public static final String REQUEST_MODE_NORMAL = "request_mode_normal";
public static final String ERROR_MESSAGE = "error_message";
@StringDef({PING, PING_BACK, REQUEST_MODE_NORMAL, ERROR_MESSAGE})
@Retention(RetentionPolicy.SOURCE)
public @interface Type {
}
@MessageCall.Type
private String mMessage;
現在我有另一個String
值是由用戶輸入的,我想將此傳遞到mMesssage
字段。這是在編譯時未知的值,所以我要檢查這個類似:
public MessageCall(String message) {
switch (message) {
case PING:
mMessage = PING;
break;
case PING_BACK:
mMessage = PING_BACK;
break;
case REQUEST_MODE_NORMAL:
mMessage = REQUEST_MODE_NORMAL;
break;
default:
mMessage = ERROR_MESSAGE;
}
}
我認爲這是如此糟糕的解決方案,我現在和我wounder說:「有什麼其他的解決方案來解決我的問題。」
感謝您的支持。
這裏沒有枚舉,只是字符串常量您應該使用適當的枚舉。 – shmosel
這是Google減少枚舉大小的最佳做法。所以我混淆了這一點。 –