簡體   English   中英

為什么核心庫中有些java方法以數字結尾?

[英]Why some java methods in core libraries end with numbers?

在JDK的很多類中很常見,舉幾個例子:

  1. java.util.Properties
    • 加載0
    • 商店0
  2. java.lang.線程
    • 開始0
    • 停止0
    • 設置優先級0

通常它們是私有本地方法(如在 Thread 類中),但有時它們只是私有的(Properties 類)

我只是很好奇是否有人知道這背后是否有任何歷史。

我相信它們是這樣命名的,因為代碼中存在具有相同名稱的等效函數,只是為了區分本機輔助函數和公共函數,他們決定在它們后綴為 0。

java.util.Properties中, loadstoreload0store0都存在。

方法名稱后的 0 用於區分具有相同名稱的公共方法和私有方法。

Start function會調用start0 function。以0結尾的函數是私有方法。 而那些不以數字結尾的是公開的。 您可以在任何圖書館簽到。

在方法名稱上使用零后綴只是一種約定,用於處理您擁有公共 API 方法和相應的私有方法的情況。 在 Java SE 庫中,這通常用於提供由類實現的底層功能的native方法。 (你可以通過查看 OpenJDK 源代碼來了解發生了什么。)

但是你的問題是:

為什么核心庫中有些java方法以數字結尾?

因為有人認為這是個好主意。 這並不是絕對必要的,因為它們通常可以重載公共方法。 由於零后綴問題是私有的,因此方法的命名不應超出 class 及其本機實現。

我只是很好奇是否有人知道這背后是否有任何歷史。

原始的 Java 樣式指南中沒有提及此約定。 事實上,我認為它早於 Java。我依稀記得在 4.x BSD Unix 的 C 庫中看到過它。那是 1980 年代中期。 如果他們從其他地方采用它,我也不會感到驚訝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM