色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在Java中定義常量兩種常見策略

汽車玩家 ? 來源:黑馬程序員 ? 作者:黑馬程序員 ? 2020-05-05 20:49 ? 次閱讀

關于Java中常量的話題似乎有很多困惑。有些人使用整數或字符串來定義常量,而另一些人則使用枚舉。

我還遇到了在它們自己的接口中定義的常量——在接口中,使用常量的類必須實現接口。這種策略通常被稱為接口常量設計模式。

在本文中,我們將了解在Java中存儲常量的兩種最常見的策略:整數和枚舉。

首先也是最重要的,當你決定使用常量時,你應該非常確定常量不會隨著時間而改變,這樣你就可以避免重新編譯。

在這篇文章中,我們將使用一個非常常見的常量候選——工作日!

假設我們有一個表示在線商店中訂單的類,我們希望在其中跟蹤訂單發生在一周中的哪一天。

看起來是這樣的:

在Java中定義常量兩種常見策略

請注意,該類暫時不會編譯-[數據類型]只是我們將使用的常量類型的占位符。

用整數定義常數

在Java中,定義常量最常用的方法之一是通過整數,其中整數變量是靜態的。

在Java中定義常量兩種常見策略

定義整數常量時要問的第一個問題是將它們放置在何處。我們是否將它們直接放在班級中?還是給他們上課?

由于days非常通用,而且不一定只連接到Order類型的對象,因此我們將在它們自己的類WeekDay中定義它們。

在Java中定義常量兩種常見策略

你可能注意到了私有構造函數——這是為了避免客戶端實例化類。該類只保存靜態變量,這些變量沒有綁定到對象,因此不需要實例化該類。

現在,每當我們需要為訂單設定一個特定的日期時,我們都會這樣做:

在Java中定義常量兩種常見策略

當我們想檢查訂單是否發生在星期五時,我們可以簡單地調用write

到目前為止,還不錯。這個設計肯定不會有什么問題吧?

假設你一年后會回到這個代碼,你必須檢查下訂單是否在周一發生。

在這種情況下,可以嘗試以下方法:

在那一刻,完全忘記了WeekDay類,這段代碼非常有意義。星期一是一周的第一天,所以工作日應該是1,對吧?

但不是,因為靜態in t變量Monday在我們的WeekDay類中定義為0!

這是一個很好的例子,說明了為什么應該考慮避免使用整數常量。它們容易出錯和混淆,并且很難調試。

用枚舉定義常量

在Java中定義常量的另一種方法是使用枚舉。

當使用枚舉時,常量類將如下所示:

在Java中定義常量兩種常見策略

注意,沒有私有構造函數-不需要程序員(你?。娭圃擃愂遣豢蓪嵗?,因為枚舉在默認情況下是不可實例化的!

將工作日設置為順序的語法與整型常量的語法完全相同:

我們如何在星期五處理訂單也沒有什么不同:

關鍵的區別在于,這是在Order類中設置和比較weekday變量值的唯一方法。

order.setWeekDay(1);和if(order.getWeekDay()==1)都會使編譯器拋出一個錯誤,因為試圖使用integerDay類型的變量,而它們應該是WeekDay類型。

回想一下你完全忘記了的情景。

對于枚舉,這不再是一個問題。如果嘗試使用整數而不是工作日枚舉的成員,編譯器只會拋出一個錯誤,告訴您需要使用工作日枚舉。

換言之,唯一能檢查訂單是否在星期五發生的是:

就如上面這樣,再清楚不過了。

不再被迫記住constants類,如果有任何客戶機要使用您的代碼,他們不必懷疑Monday實際上是由0還是1表示的。

我希望這個例子向您展示了為什么在定義常量時應該考慮在整數上使用枚舉。

枚舉將使你的代碼不易出錯、更易于閱讀和維護。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8612

    瀏覽量

    151291
  • JAVA
    +關注

    關注

    19

    文章

    2970

    瀏覽量

    104808
收藏 人收藏

    評論

    相關推薦

    基于ISOS測試標準,兩種封裝方式對鈣鈦礦太陽能電池性能影響分析

    鈣鈦礦太陽能電池(PSCs)極具潛力,但濕度和氧氣會導致其性能快速下降,因此封裝技術對提高其穩定性至關重要。文章研究了兩種常見的封裝策略:基于層壓的玻璃-玻璃封裝(COM)和基于膠水的封裝(LAB
    的頭像 發表于 01-03 09:03 ?26次閱讀
    基于ISOS測試標準,<b class='flag-5'>兩種</b>封裝方式對鈣鈦礦太陽能電池性能影響分析

    Java 枚舉與策略模式、函數式接口的結合:實現高內聚低耦合的設計

    ,通常會使用枚舉來定義業務上的一組常量,那除了簡單地定義常量之外,我們如何利用枚舉來實現高內聚、低耦合的設計呢?下面介紹下枚舉和
    的頭像 發表于 11-21 14:06 ?224次閱讀

    噪聲傳導的兩種模式

    噪聲傳導有兩種模式,一為差模傳導,一為共模傳導。
    的頭像 發表于 10-15 11:33 ?310次閱讀
    噪聲傳導的<b class='flag-5'>兩種</b>模式

    OPA277為何有Specified Voltage Range和Operating Voltage Range兩種定義?

    OPA277為何有Specified Voltage Range和Operating Voltage Range兩種定義?謝謝!
    發表于 09-26 07:32

    兩種常見的硬件消抖實現方式

    由于機械按鍵操作過程中會產生抖動現象,這種抖動信號如果不加以處理,就可能導致單片機等電子設備誤判按鍵狀態,從而引發錯誤操作。本文將詳細介紹兩種常見的硬件消抖實現方式:RS觸發器和電容濾波。 RS
    的頭像 發表于 09-25 16:54 ?1369次閱讀
    <b class='flag-5'>兩種</b><b class='flag-5'>常見</b>的硬件消抖實現方式

    晶閘管的阻斷狀態有兩種是什么

    晶閘管(Thyristor)是一半導體器件,具有單向導電性,廣泛應用于電力電子領域。晶閘管的阻斷狀態有兩種:正向阻斷狀態和反向阻斷狀態。以下是對這兩種阻斷狀態的分析。 正向阻斷狀態 正向阻斷狀態
    的頭像 發表于 08-14 16:49 ?759次閱讀

    wdm設備的兩種傳輸方式

    系統,有多種傳輸方式,其中最常見兩種是密集波分復用(DWDM)和粗波分復用(CWDM)。 1. 密集波分復用(DWDM) 1.1 DWDM技術原理 密集波分復用(Dense Wavelength Division Multi
    的頭像 發表于 07-18 09:45 ?493次閱讀

    華納云:java web和java有什么區別java web和java有什么區別

    Java Web和Java個不同的概念,它們功能、用途和實現方式上存在一些區別,下面將詳細介紹它們之間的區別。 1. 功能和用途: – Jav
    的頭像 發表于 07-16 13:35 ?821次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別

    PCBA加工中常見兩種焊接方式詳解

    一站式PCBA智造廠家今天為大家講講PCBA加工手工焊接有哪幾種方式?PCBA加工過程中常用焊接方式。PCBA(印刷電路板組裝)加工過程,焊接是一個關鍵的步驟。而手工焊接作為一常見
    的頭像 發表于 06-14 09:18 ?555次閱讀

    LabVIEW里Ring自定義控件,其常量無法保持同步修改,如何解決

    時,其常量無法跟隨變換。 如圖所示,自定義常量可以修改成不同的映射關系,同樣都是“CSP”這個名稱,可以對應2或者8。 如果通過創建輸入控件的方式,則“CSP”這個名稱一定對應的是自定義
    發表于 04-24 11:20

    淺析多晶硅錠位錯存在的兩種來源

    根據晶體凝固生長與位錯形成、運動與增殖的理論,多晶硅錠位錯存在兩種來源:原生和增殖。
    的頭像 發表于 03-27 11:09 ?559次閱讀
    淺析多晶硅錠<b class='flag-5'>中</b>位錯存在的<b class='flag-5'>兩種</b>來源

    定義系統時鐘頻率后,用庫函數和微帶兩種方式點亮LED燈,為什么燈的閃爍頻率不一致?

    寫了一個自定義系統時鐘頻率的函數,然后自定義系統時鐘頻率為28MHz,在這個頻率下用庫函數和微帶兩種方式點亮LED燈,為什么燈的閃爍頻率不一致? 代碼附件
    發表于 03-25 21:45

    異或門兩種常見的實現方式

    兩種實現方式都能夠實現異或門的功能,具體的選擇取決于設計需求和邏輯門的可用性。實際構建異或門時,可以使用離散電子元件(如晶體管、二極管等)或整合電路芯片(如 TTL、CMOS 等)來實現。
    的頭像 發表于 02-04 17:30 ?1.3w次閱讀
    異或門<b class='flag-5'>兩種</b><b class='flag-5'>常見</b>的實現方式

    配置KubernetesPod使用代理的兩種常見方式

    的需要。本文將介紹配置KubernetesPod使用代理的兩種常見方式:通過ConfigMap和直接在應用程序環境變量設置。
    的頭像 發表于 01-05 11:22 ?1151次閱讀
    配置Kubernetes<b class='flag-5'>中</b>Pod使用代理的<b class='flag-5'>兩種</b><b class='flag-5'>常見</b>方式

    半波整流器和橋式整流器兩種常見電路的主要區別

    半波整流器和橋式整流器兩種常見電路的主要區別? 半波整流器和橋式整流器是兩種常見的電路,主要用于將交流電轉換為直流電。它們電路結構和工作原
    的頭像 發表于 01-04 16:01 ?1051次閱讀
    主站蜘蛛池模板: 91福利在线观看| 老师的快感电影完整版| 狠狠色丁香婷婷久久综合| 日本无码人妻丰满熟妇5G影院 | 99久久精品互换人妻AV| 好大快用力深一点h视频| 无套内射无矿码免费看黄| 伊人久久精品午夜| 国产一区二区三区在线看片| 神马电影院午 夜理论| 成人精品视频在线观看| 日本69xxxx| 成人欧美一区二区三区白人| 含羞草在线| 国产AV精品一区二区三区漫画| 国产亚洲精品99一区二区| 噜妇插内射精品| 538在线播放| 国产在线精品视亚洲不卡| 亚洲AV无码乱码A片无码蜜桃 | 亚洲精品九色在线网站| 狠狠色色综合站| 幼儿交1300部一区二区| 老师的快感电影完整版| 亚洲国产精品嫩草影院永久| 国产又湿又黄又硬又刺激视频 | 天天躁日日躁狠狠躁中文字幕老牛 | 国产成人精品电影在线观看| 无限资源在线观看8| 黑人特黄AA完整性大片| 夜色福利院在线观看免费| 国产成人综合在线观看网站| 天美麻豆成人AV精品| 国际老妇高清在线观看| 色尼玛亚洲| 国产精品亚洲高清一区二区| 亚洲视频中文字幕在线观看| 国产精品ⅴ视频免费观看| 欧洲电影巜肉欲丛林| 高h肉文np| 野花韩国中文版免费观看|