亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java 中常量的定義方式。

瀏覽:130日期:2023-11-12 17:23:56

問題描述

public class EnumDome { public static final String SUCCESS = 'Y'; public static final String FAIL = 'N'; enum State{SUCCESS('Y'),FAIL('N');private final String state;State(String state){ this.state = state;}public String getState(){ return state;} }}

這兩種定義常量的方式各有什么特點?在使用過程中更推薦使用何種方式?

問題解答

回答1:

這個問題,從語法層面上來說,沒有什么懸念。百度一下常量和枚舉的區別就好了。

但是從設計角度上來說,'enum' 要優于 'static final' 的。

這么說可能比較抽象,我舉個例子:比如我定義了一個公有函數(更準確的說是公有方法)叫 setResponseState

一種是這樣定義的:setResponseState(String state) { ... },使用字符串作參數。

一種是這樣定義的:setResponseState(EnumDemo.State state) { ... },使用枚舉作參數。

對于第一種定義,正確的調用方式是:setResponseState(EnumDemo.SUCCESS);

但是如果這么調用:setResponseState('abcd'); 是不是在 JAVA 語言的語法上也沒有問題呢?

編譯器走到這里還是可以通過的……但在運行期可能會導致嚴重的錯誤,降低系統的可靠性。

這里的最大問題就是 '函數參數不夠明確',這會給使用這個方法的開發人員造成困擾。他不得不去回查我的源碼,才能最終確定到底要傳一個什么樣的參數給我……

而再假如,這個函數(方法)被我封裝到一套框架代碼中,不提供源碼,那么開發人員回查起來就更困難了。這會降低開發效率。

而使用 setResponseState(EnumDemo.State state) { ... } 這樣的定義方式,是非常明確的。要么是 SUCCESS,要么是 FAIL,再要么是 null。

開發人員調用這個函數(方法)幾乎不會出錯,也根本無需回查源碼。

所以比較嚴謹的做法是使用枚舉。當然這是在定義公共函數(方法)的時候。

而如果 setResponseState 是一個私有函數(方法),那么可以稍微隨意一些,使用字符串參數也是可以的。必定這種 '不嚴謹' 只暴露給內部。

形象一點的,就是對外我們要顯得非常專業,而對內,可以稍微降低一下標準。

這是常量和枚舉的兩個不同應用場景,希望對你有所幫助……

回答2:

簡單的說:只有 static final 是定義常量的方法。 后面那個不是,不過功能上是相似的。具體用那個還是取決于你的需求

深入地說:貼地址:

Java 語言中 Enum 類型的使用介紹Java枚舉類型(enum)簡介

標簽: java
相關文章:
主站蜘蛛池模板: 亚洲综合图片人成综合网 | 欧美黄色片在线播放 | 国产大陆亚洲精品国产 | 真实国产乱视频国语 | 精品国产日韩亚洲一区二区 | 免黄网站 | 国产精品一级二级三级 | 中文字幕在线永久视频 | 久久国产成人精品 | 国产你懂得 | 国产日韩在线视频 | 成人啪啪网站 | 国产91在线播放中文 | 这里只有精品国产 | 国产又黄又爽又色视频免费观看 | 午夜亚洲国产 | 国产在线永久视频 | 在线毛片一区二区不卡视频 | 91成人午夜性a一级毛片 | 特黄特色一级aa毛片免费观看 | 免费三片在线观看网站 | 清纯唯美综合网 | 黄色一级毛片看一级毛片 | 亚洲图片在线播放 | 毛片让我看一下毛片 | 免费的黄色小视频 | 欧美视频亚洲色图 | 成人黄网大全在线观看 | 小蝌蚪亚洲精品国产 | 你懂的免费在线 | 草草草草视频 | 久久久精品中文字幕 | 国产chinese在线视频 | 日韩视频一区二区三区 | 免费一级乱子伦片 | 欧美日韩中文字幕久久伊人 | 日韩欧美一级a毛片欧美一级 | 91精品免费久久久久久久久 | 国产娱乐凹凸视觉盛宴在线视频 | a级国产乱理论片在线观看看 | 美国毛片亚洲社区在线观看 |