我目前正在爲使用會話描述協議(SDP;請參閱:https://tools.ietf.org/html/rfc4566)提供的流信息編寫一個簡單的解析器。常量與枚舉有關的解析
對於各種領域,如始發或媒體,存在可以具有不同的值的標誌。例如,在媒體字段媒體傳輸協議(見:https://tools.ietf.org/html/rfc4566#section-8.2.2)
m=audio 49170 RTP/AVP 0
原癌標誌(媒體傳輸協議)可以是 「RTP/AVP」, 「RTP/SAVP」 或 「UDP」根據規範。
因爲有許多值這個標誌可以有,這是適合使用的enum
:
public enum MediaTransportProtocol {
UDP,
RTP_AVP
RTP_SAVP
}
但現在這裏的問題:有一個字符串枚舉沒有這樣的事情,所以我不能使用這個進行解析(例如,因爲RTP/AVP中的「/
」字符)。因此,我必須定義其他常量才能在解析媒體字段時切換媒體傳輸協議標誌。
我已經使用過的每個enum
領域的「DESCRIPTION
」屬性考慮,但後來我不得不只寫一個附加的方法/擴展方法來接收enum flag description
(收集枚舉描述屬性是不是一個簡單的任務恕我直言)
解析這些數據的最佳做法是什麼?或者有沒有像字符串枚舉的東西,我只是沒有意識到它?
public enum MyStringEnum {
ENUMVAL1 = "EnumVal-01",
ENUMVAL2 = "EnumVal-02"
...
}
正如我已經提到的,我使用DESCRIPTION屬性來實現這一點。但是寫一個擴展方法,通過使用反射來獲取屬性等遍歷枚舉是很多工作,只是一個簡單的任務,像這樣。 – Atrotygma
@Atrotygma,對不起,我錯過了這一點。老實說,我會說這是一個相當平凡的任務,就像一個小方法。無論如何,我沒有更簡單的解決方案) –