java - 接口中的成員變量怎么不是常量了?
問(wèn)題描述
switch (from) { case TAGs.casts://constant expression requiredbreak;}//我的TAGs.casts是這樣的public interface TAGs { String casts = String.class.getSimpleName();}//如果寫(xiě)成這個(gè)樣子就可以編譯public interface TAGs { String casts = 'String';}
不是說(shuō)接口中的成員變量都是常量嗎?為什么在case上使用不了提示需要常量呢?
問(wèn)題解答
回答1:使用接口要給常量賦初值,你自己寫(xiě)的沒(méi)有給定初值,肯定是錯(cuò)的啊。
回答2:switch里的case需要在編譯期就確定值,而String.class.getSimpleName();需要到運(yùn)行的時(shí)候才能知道(盡管運(yùn)行的時(shí)候確實(shí)是常量),所以編譯不能通過(guò)
回答3:的確是。一個(gè)是編譯時(shí)要求的知道,一個(gè)是runtime(反射的方法都是runtime的)。之前答錯(cuò)了——以前看effective java的時(shí)候是static final修飾的的。同時(shí)里面還有一個(gè)建議,導(dǎo)出常量請(qǐng)使用枚舉類(lèi)。
回答4:不是說(shuō)接口中的成員變量都是常量嗎請(qǐng)問(wèn)這句話(huà)從哪里聽(tīng)來(lái)的?常量需要使用static final修飾,并且需要給定初始值
相關(guān)文章:
1. sql語(yǔ)句如何按or排序取出記錄2. node.js - 用nodejs 的node-xlsx模塊去讀取excel中的數(shù)據(jù),可是讀取出來(lái)的日期是數(shù)字,請(qǐng)問(wèn)該如何讀取日期呢?3. 多選框?qū)戇M(jìn)數(shù)據(jù)庫(kù)怎么寫(xiě)4. php如何獲取訪(fǎng)問(wèn)者路由器的mac地址5. javascript - vue-resource中如何設(shè)置全局的timeout?6. 小程序怎么加外鏈,語(yǔ)句怎么寫(xiě)!求救新手,開(kāi)文檔沒(méi)發(fā)現(xiàn)7. html5 - input type=’file’ 上傳獲取的fileList對(duì)象怎么存儲(chǔ)于瀏覽器?8. javascript - 這兩種函數(shù)寫(xiě)法各有什么好處?9. 求教一個(gè)mysql建表分組索引問(wèn)題10. python沒(méi)入門(mén),請(qǐng)教一個(gè)問(wèn)題
