![](/img/trans.png)
[英]final public static ints can't be used in a switch statement?
[英]why public static final string can not used in java switch
java支持切換字符串,但是在case字段中,如何使用常量字符串? 像這樣:
PhxLog l = new PhxLog();
for (String s : l.FIELDS) {
Object v = mapBaseData.getData().get(s);
switch (s) {
case l.LOG_FIELD_TIME: // this is wrong, but how to use a constant instead of a "xxxx"
l.setTime((String)v);
break;
(貸方為EJP的回答)
在JLS中 ,它提到您所用的表達式必須是一個常量表達式。
常量表達式有不同的形式,並且列表中包含字符串內容:
TypeName形式的合格名稱(第6.5.6.2節)。 引用常量變量的標識符(第4.12.4節)。
從您的代碼中,它暗示l.LOG_FIELD_TIME
要求,因為l
不是TypeName
(由for (String s : l) {
)。 如果LOG_FIELD_TIME
是一個static final
字段,則應改用ClassNameOfL.LOG_FIELD_TIME
,這樣事情就可以了。
如何使用常量代替“ xxxx”
你不能 JLS 14.11 :
每個case標簽都有一個case常量,它可以是常量表達式或枚舉常量的名稱。
static final String
的名稱不是常量表達式。
您可以使用一個enum
,如它所說。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.