java - 接口中的成員變量怎么不是常量了?
問(wèn)題描述
switch (from) { case TAGs.casts://constant expression requiredbreak;}//我的TAGs.casts是這樣的public interface TAGs { String casts = String.class.getSimpleName();}//如果寫成這個(gè)樣子就可以編譯public interface TAGs { String casts = 'String';}
不是說(shuō)接口中的成員變量都是常量嗎?為什么在case上使用不了提示需要常量呢?
問(wèn)題解答
回答1:使用接口要給常量賦初值,你自己寫的沒(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)使用枚舉類。
回答4:不是說(shuō)接口中的成員變量都是常量嗎請(qǐng)問(wèn)這句話從哪里聽(tīng)來(lái)的?常量需要使用static final修飾,并且需要給定初始值
相關(guān)文章:
1. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””2. javascript - vue使用videojs+videojs-contrib-hls報(bào)錯(cuò)3. 關(guān)于phpstudy設(shè)置主從數(shù)據(jù)庫(kù)4. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?5. docker內(nèi)創(chuàng)建jenkins訪問(wèn)另一個(gè)容器下的服務(wù)器問(wèn)題6. golang - 用IDE看docker源碼時(shí)的小問(wèn)題7. angular.js - angular 配置代理proxy.conf.json后報(bào)錯(cuò),頁(yè)面返回500internal server error?8. javascript - 求救!網(wǎng)頁(yè)播放視頻只有聲音沒(méi)有畫面,網(wǎng)頁(yè)上傳視頻文件時(shí)怎么知道視頻的編碼為H264還是MPEG4??9. mysql如何配置遠(yuǎn)程php外網(wǎng)鏈接數(shù)據(jù)庫(kù)10. dockerfile - [docker build image失敗- npm install]
