日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

jAvA中deprecate,在Java中使用Deprecated方法或类是错误的吗?

發布時間:2024/9/27 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jAvA中deprecate,在Java中使用Deprecated方法或类是错误的吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.在Java中使用Deprecated方法或類是錯誤的嗎?

從已棄用的定義 :

注釋@Deprecated的程序元素是程序員不鼓勵使用的程序元素,通常是因為它是危險的,或者是因為存在更好的select。

該方法被保存在API中,用于在未指定的時間段內向后兼容,并且可能在將來的版本中被刪除。 也就是說,不,這沒有錯 ,但是有一個更好的方法可以做到這一點,這對API的變化更加強大。

2.如果我沒有改變任何方法并且運行我的應用程序,那么我會有什么警告,會不會造成任何性能問題?

最有可能沒有。 它將繼續按照棄用的方式工作。 API方法的合同不會改變。 如果一些內部數據結構改變,而采用新的,更好的方法,則可能會對性能產生影響,但這種情況不太可能發生。

Java API中最有趣的棄用方法是FontMetrics.getMaxDecent 。 棄用的原因:拼寫錯誤。

已過時。 從JDK版本1.1.1開始,由getMaxDescent()取代。

您仍然可以使用不推薦使用的代碼而不改變性能,但是拋棄方法/類的全部意義在于讓用戶知道現在有更好的方法來使用它,而且在將來的版本中,可能會刪除已棄用的代碼。

術語

從官方的Sun詞匯表:

棄用 :指不再推薦的類,接口,構造函數,方法或字段,并可能在將來的版本中停止存在。

從何時何地開始棄用指南:

你可能聽說過“自嘲的幽默”這個詞,或者幽默說話者的重要性最小化。 不推薦使用的類或方法就是這樣。 這不再重要。 事實上,你不應該再使用它,因為它已被取代,將來可能不復存在。

@Deprecated注釋更進一步,并警告危險:

注釋@Deprecated的程序元素是程序員不鼓勵使用的程序元素,通常是因為它是危險的 ,或者是因為存在更好的select。

參考

java.sun.com詞匯表

語言指南/如何以及何時棄用API

注釋types不推薦使用的API

對還是錯?

使用棄用方法是否正確的問題將需要在個人基礎上進行檢查。 下面是有效Java第2版中出現“已棄用”一詞的所有引號:

第7項:避免終結器 :聲稱保證終止的唯一方法是System.runFinalizersOnExit及其邪惡的雙Runtime.runFinalizersOnExit 。 這些方法是致命的缺陷,已被棄用。

第66項:同步對共享可變數據的訪問 :這些庫提供了Thread.stop方法,但是這種方法很久以前就被棄用了,因為它本質上是不安全的 – 它的使用會導致數據損壞。

項目70:文檔線程安全 : System.runFinalizersOnExit方法是線程敵對的,并已被棄用。

Item 73:避免線程組 :它們允許你一次性將特定的Thread原語應用到一堆線程。 其中有幾個基元已被棄用,其余的基本不常使用。 線程組已經過時。

所以,至less在所有上述方法中,使用它們顯然是錯誤的,至less按照Josh Bloch的說法。

用其他方法,你必須單獨考慮這些問題,并理解為什么他們被棄用,但一般來說,當反對的決定是合理的,傾向于傾向于錯誤而不是正確的繼續使用它們。

相關問題

棄用和傳統API之間的區別?

除了上述所有出色的響應,我發現還有一個原因是刪除不推薦的API調用。

研究為什么一個調用被棄用我經常發現自己學習了關于Java / API /框架的有趣的事情。 通常有一個很好的理由,為什么一個方法被棄用,理解這些原因導致更深刻的見解。

所以從學習/成長的angular度來看,這也是一個值得的努力

它當然不會造成性能問題 – 在將來不推薦使用的方式,函數可能不再是庫的一部分,所以您應該避免在新代碼中使用它,并更改舊代碼以停止使用它,所以有一天,當你升級struts并發現該function不再存在時,你不會遇到問題

你可能聽說過“自嘲幽默”這個詞。 這是幽默,最大限度地減less你的重要性。 不推薦使用的類或方法就是這樣。 這不再重要。 事實上,它不應該再被使用,因為它將來可能會不復存在。

盡量避免它

這沒有錯,只是不推薦。 這通常意味著在這一點上有更好的做事方式,如果你使用新的改進方式,你會做得很好。 一些棄用的東西是非常危險的,應該完全避免。 新方法可以產生比已棄用的更好的性能,但事實并非總是如此。

一般來說不,使用deprecated方法并不是絕對錯誤,只要你有一個好的應急計劃,以避免這些方法從你使用的庫中消失時出現任何問題。 有了Java API本身,這絕不會發生,但隨著其他任何東西,這意味著它將被刪除。 如果您特別計劃不升級( 盡pipe您最有可能應該從長遠來看 )軟件的支持庫,那么使用deprecated方法沒有問題。

沒有。

是的,這是錯的。

棄用的方法或類將在未來版本的Java中刪除,不應使用。 在每種情況下,都應該有一個替代scheme。 使用它。

有些情況下,您必須使用已棄用的類或方法才能實現項目目標。 在這種情況下,你真的別無select,只能使用它。 Java的未來版本可能會破壞該代碼,但如果這是一個要求,你必須忍受。 這可能不是你第一次為了滿足項目要求而做錯了事情,而且肯定不會是最后一次。

當您升級到新版本的Java或其他庫時,有時您使用的方法或類已被棄用。 不推薦使用的方法不被支持,但不應該產生意想不到的結果。 這并不意味著他們不會盡快切換你的代碼。

棄用過程是為了確保作者有足夠的時間將代碼從舊的API更改為新的API。 利用這個時間。 盡快更改您的代碼。

這是沒有錯的,但是一些被棄用的方法在未來版本的軟件中被刪除了,所以你最終可能會得到不工作的代碼。

在Java中使用Deprecated方法或類是錯誤的嗎?“

不是這樣的錯誤,但它可以為您節省一些麻煩。 下面是一個非常不鼓勵使用不推薦的方法的例子:

為什么不推薦使用Thread.stop?

因為它本質上是不安全的。 停止線程會導致它解鎖所有已locking的監視器。 (當ThreadDeathexception傳播到堆棧時,監視器被解鎖。)如果之前由這些監視器保護的對象處于不一致狀態,則其他線程現在可以以不一致的狀態查看這些對象。 據稱這些物體被損壞。 當線程操作受損對象時,可能導致任意行為。 這種行為可能是微妙的,難以察覺,或者可能是明顯的。 與其他未經檢查的exception不同,ThreadDeath靜默地殺死線程; 因此,用戶沒有警告他的程序可能被損壞。 在發生實際損害后,腐敗現象可能會隨時出現,甚至在未來數小時甚至數天。

如果不改變任何方法,并運行我的應用程序,如果我有警告,它會產生任何性能問題。

在性能方面應該沒有問題。 標準API旨在尊重一些向后兼容性,因此應用程序可以逐漸適應新版本的Java。

在Java中使用Deprecated方法或類是錯誤的嗎? 這不是“錯誤的”,仍在工作,但盡可能避免。

假設存在一個與方法相關的安全漏洞,開發人員認定這是一個devise缺陷。 所以他們可能會決定放棄這個方法,并引入新的方法。

所以,如果你仍然使用舊的方法,你有一個威脅。 所以要注意到棄用的原因,并檢查它是如何影響你的。

如果不改變任何方法,并運行我的應用程序警告,我會有什么,它會造成任何性能問題。

如果棄用是由于性能問題造成的,那么您將面臨性能問題,否則沒有理由有這樣的問題。 再次想指出的是,要知道貶值的原因。

當然不是 – 因為整個Java得到@Deprecated :-)只要Java持續,你可以隨意使用它們。 無論如何不會注意到任何差異,除非它真的被破壞了。 含義 – 必須閱讀并決定。

然而,在.Net中,當聲明了某個東西的時候,即使你之前沒有使用它,你也應該馬上去閱讀這個東西 – 你有50%的機會比replace更有效率和/或更容易使用:-))

所以總的來說,這些天保持技術保守是相當有益的,但是你必須首先做好你的閱讀工作。

在Java中,它被@Deprecated,在C#中是[Obsolete]。

我想我更喜歡C#的術語。 這只是意味著它已經過時了。 你仍然可以使用它,但可能有更好的方法。

這就像使用Windows 3.1而不是Windows 7,如果你相信Windows 3.1已經過時。 你仍然可以使用它,但未來的版本可能會有更好的function,而未來的版本可能會被支持 – 過時的版本將不會被支持。

Java的@deprecated也一樣 – 你仍然可以使用這個方法,但是風險自擔 – 將來可能有更好的select,甚至可能不被支持。

如果您使用的是不推薦使用的代碼,則通常可以,只要您不必升級到更新的API,不build議使用的代碼可能不存在。 我build議如果你看到使用不推薦的代碼的東西,更新使用新的替代品(這通常在注釋或Javadoc棄用的評論中指出)。

編輯:正如邁克爾所指出的,如果棄用的原因是由于function上的缺陷(或者因為function不應該存在),那么很明顯,不應該使用棄用的代碼。

我覺得棄用的方法意味著; 還有一種替代方法可用,比現有方法在所有方面都更好。 最好使用比現有的方法更好的方法。 為了向后兼容,舊的方法被棄用。

總結

以上是生活随笔為你收集整理的jAvA中deprecate,在Java中使用Deprecated方法或类是错误的吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。