溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么Java方法簽名不能包含返回值類型

發布時間:2020-06-25 21:28:32 來源:億速云 閱讀:600 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關為什么Java方法簽名不能包含返回值類型,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

看下官方說明:

為什么Java方法簽名不能包含返回值類型

意思是java方法簽名包含兩個要素:方法名稱和參數列表。即不包括返回值類型。

那為什么不能包含返回值類型呢?

看一下如下兩段代碼示例。

示例一:

public String m123(int i) {
    return "456";
  }

  public int m123(int i) {
    return 123;
  }

  // 為什么不能包含返回值的原因:編譯器無法從所有的上下文中確定重載版本
  // 因此為了避免“模棱兩可”的局面, java方法簽名中不包含返回值類型
  // 示例展示:
  public void whyNoReturnType() {
    // 假設java方法簽名定義包含方法返回值類型, 方法現有 String 和 int 兩種類型返回值

    // 這行代碼編譯器可以找到返回值為 String 類型的重載方法
    String s = m123(456);

    // 而這行代碼, 編譯器無法確定你需要哪個重載版本, 因為返回值被舍棄了, 造成了一種模棱兩可的局面
    m123(567);
  }

類似的,示例二:

   public void whyNoReturnType2() {
     System.out.println(m123(456));
   }

第二個示例代碼相對更簡單,從另外一個角度看,println 方法我們會在監控輸出的時候經常使用到,而需要注意到的是 println 方法有許多重載方法,如下圖:

為什么Java方法簽名不能包含返回值類型

在示例二中,如果m123() 方法有多個返回值,那么編譯器就無法為 println() 方法決定到底要調用返回值是 String 的方法還是 返回值是 int 的方法。即陷入了一種“模棱兩可”的局面。

總結:

通過兩個示例展示了,java為了避免編譯器無法從所有上下文中找出重載而陷入“模棱兩可”的局面,因此java方法簽名中只有兩個要素:方法名稱和參數列表。不包含返回值類型。

關于Java方法簽名不能包含返回值類型的原因就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女