文章詳情頁
java - 接口中的成員變量怎么不是常量了?
瀏覽:117日期:2023-10-29 15:40:58
問題描述
switch (from) { case TAGs.casts://constant expression requiredbreak;}//我的TAGs.casts是這樣的public interface TAGs { String casts = String.class.getSimpleName();}//如果寫成這個樣子就可以編譯public interface TAGs { String casts = 'String';}
不是說接口中的成員變量都是常量嗎?為什么在case上使用不了提示需要常量呢?
問題解答
回答1:使用接口要給常量賦初值,你自己寫的沒有給定初值,肯定是錯的啊。
回答2:switch里的case需要在編譯期就確定值,而String.class.getSimpleName();需要到運行的時候才能知道(盡管運行的時候確實是常量),所以編譯不能通過
回答3:的確是。一個是編譯時要求的知道,一個是runtime(反射的方法都是runtime的)。之前答錯了——以前看effective java的時候是static final修飾的的。同時里面還有一個建議,導出常量請使用枚舉類。
回答4:不是說接口中的成員變量都是常量嗎請問這句話從哪里聽來的?常量需要使用static final修飾,并且需要給定初始值
標簽:
java
相關文章:
1. javascript - 開發者工具中的本地緩存放在電腦的哪個文件夾2. mysql - 關于時間的入庫問題,大神們你們存數據庫的時間是取本地的時間,還是取utc的時間?3. python3.x - 用python操作mongodb,在pypi上應該安裝那個?4. java - 靜態屬性中的賦值和靜態代碼塊中的賦值有什么區別?5. apache - 本地搭建wordpress權限問題6. javascript - 從mysql獲取json數據,前端怎么處理轉換解析json類型7. node.js - vue-cli項目不知名報錯,求解8. html5 - 手機連接電腦在谷歌上調試app,出現如下的情況9. html5和Flash對抗是什么情況?10. 數據庫無法進入
排行榜
