亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

ava 語言的最初設(shè)計(jì)者將“const”關(guān)鍵字作為保留字。但該術(shù)語仍未實(shí)現(xiàn),而且很可能永遠(yuǎn)不會(huì)實(shí)現(xiàn)。這種情況讓許多開發(fā)人員想知道為什么。

 

讓我們更多地了解 JAVA 中的“const”關(guān)鍵字以及描述語言中常量的一些替代方法。

 

Java 中的“const”是什么意思?

任何看過 Java 中的“const”關(guān)鍵字的人都會(huì)從邏輯上假設(shè)其最初的意圖是定義一個(gè)常量值。這個(gè)假設(shè)不會(huì)太離譜。

 

競(jìng)爭語言 C 和 C++ 都使用“const”關(guān)鍵字,但這些語言并非純粹面向?qū)ο蟆栴}就在這里。在 Java 中,作為“const”的東西到底意味著什么?

 

保持不變是否意味著實(shí)例變量不會(huì)改變?

保持不變是否意味著類變量不會(huì)改變?

常量是否意味著對(duì)象的方法不能被覆蓋?

保持不變是否意味著對(duì)象引用不會(huì)改變?

恒定是否意味著對(duì)象是不可變的?

 

考慮到上述所有問題,另一個(gè)大問題是如果一個(gè)對(duì)象僅在某些情況下是恒定的?

 

例如,某些語言允許“const”作為方法簽名的一部分,這表明對(duì)象及其屬性在方法內(nèi)使用的短時(shí)間內(nèi)不能更改。這有時(shí)被稱為常量正確性。語言架構(gòu)師在檢查這些任務(wù)并試圖確定“const”關(guān)鍵字的含義時(shí),最終可能會(huì)陷入一個(gè)深深的兔子洞。

 

為什么Java中的const關(guān)鍵字沒有實(shí)現(xiàn)?

Java 的“final”與“const”關(guān)鍵字

在 Java 中最初可能使用“const 關(guān)鍵字”解決的許多用例使用 Java 的“final”關(guān)鍵字已經(jīng)足夠解決了。在 Java 中,“final”用于:

 

將原始值標(biāo)記為常量;

表示方法不能被覆蓋;

指定對(duì)象引用不能更改;

確保變量在方法中不變。

 

當(dāng)“static”和“final”關(guān)鍵字組合時(shí),可以使類級(jí)變量保持不變。雖然這并沒有完全涵蓋在其他語言中使用“const”關(guān)鍵字的所有不同場(chǎng)景,但它已經(jīng)接近了。此外,將“靜態(tài)”和“最終”組合在一起的選擇為常量屬性的行為方式提供了更大的靈活性,而不是僅使用一個(gè)關(guān)鍵字來嘗試解決實(shí)例和類級(jí)別的語義。

 

當(dāng)開發(fā)人員考慮語言通過允許將“static”和“final”關(guān)鍵字菊花鏈在一起而提供的功能和靈活性時(shí),人們可能會(huì)推斷 Java 中未實(shí)現(xiàn)“const”關(guān)鍵字的原因是因?yàn)樗恍枰Ec Java 中的“const”關(guān)鍵字的實(shí)現(xiàn)相比,“static”和“final”關(guān)鍵字的組合有效且可以說提供了一種更具表現(xiàn)力的方式來聲明不變的變量。

 

不可變對(duì)象

就完全不可變的對(duì)象而言,歷史上的解決方法是將實(shí)例變量聲明為私有并通過公共 setter 和 getter 限制訪問。最近,Java 引入了值類型的概念作為 JEP 169 的一部分。這將為該語言添加不可變、無引用的對(duì)象,并再次提供一種 Java 語言語法來實(shí)現(xiàn)許多與“const”相關(guān)的概念。

 

關(guān)于在 Java 中使用“const”關(guān)鍵字來實(shí)現(xiàn) const 正確性的討論始于 1999 年。但是,增強(qiáng)提案被拒絕為特性蠕變。語言架構(gòu)師斷言,在完全增量之后在 Java 中添加 const 實(shí)現(xiàn)——JDK 的長期支持版本已經(jīng)推出——將導(dǎo)致代碼膨脹,并且可能存在向后兼容性問題,從而完全扼殺了這個(gè)概念。從那以后,在 Java 中實(shí)現(xiàn)“const”關(guān)鍵字的想法就再也沒有被重新審視過。

 

為什么Java中的const關(guān)鍵字沒有實(shí)現(xiàn)?

Java 中的 const 關(guān)鍵字不能在不導(dǎo)致編譯時(shí)錯(cuò)誤的情況下使用。

 

為什么“const”沒有在 Java 中實(shí)現(xiàn)?如果沒有實(shí)現(xiàn)它的意圖,為什么要讓'const'成為保留字呢?

 

一個(gè)可能的原因是避免混淆。如果“const”不是保留字,則允許開發(fā)人員使用該短語來命名變量。試想一下,對(duì)于學(xué)習(xí)使用“const”實(shí)現(xiàn)的語言進(jìn)行編程的 C++ 和 JavaScript 開發(fā)人員來說,這可能會(huì)造成多大的困惑。簡單地將 Java 中的“const”關(guān)鍵字設(shè)為保留字有助于避免任何混淆。

 

為什么 Java 中的“const”是沒有實(shí)現(xiàn)的保留字?

 

同樣,這主要是為了避免混淆。其他關(guān)鍵字提供了等效的功能,并且因?yàn)樵摳拍畈贿m合面向?qū)ο蟮姆独;蛘哂猛庑械脑拋碚f,Java 不需要它。

 

在大多數(shù)情況下,因?yàn)?nbsp;JDK 不需要它,“const”在 Java 中沒有實(shí)現(xiàn)。其他語言特性提供聲明常量或提供不變性的能力。該語言的提供者希望避免混淆,并決定即使是善意的開發(fā)人員也不能在他們的代碼中使用該術(shù)語。

分享到:
標(biāo)簽:const
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定