Java方法簽名為何不包含返回值類型
看下官方說明:

意思是java方法簽名包含兩個要素:方法名稱和參數(shù)列表。即不包括返回值類型。
那為什么不能包含返回值類型呢?
看一下如下兩段代碼示例。
示例一:
public String m123(int i) {
return "456";
}
public int m123(int i) {
return 123;
}
// 為什么不能包含返回值的原因:編譯器無法從所有的上下文中確定重載版本
// 因此為了避免“模棱兩可”的局面, java方法簽名中不包含返回值類型
// 示例展示:
public void whyNoReturnType() {
// 假設java方法簽名定義包含方法返回值類型, 方法現(xiàn)有 String 和 int 兩種類型返回值
// 這行代碼編譯器可以找到返回值為 String 類型的重載方法
String s = m123(456);
// 而這行代碼, 編譯器無法確定你需要哪個重載版本, 因為返回值被舍棄了, 造成了一種模棱兩可的局面
m123(567);
}
類似的,示例二:
public void whyNoReturnType2() {
System.out.println(m123(456));
}
第二個示例代碼相對更簡單,從另外一個角度看,println 方法我們會在監(jiān)控輸出的時候經(jīng)常使用到,而需要注意到的是 println 方法有許多重載方法,如下圖:

在示例二中,如果m123() 方法有多個返回值,那么編譯器就無法為 println() 方法決定到底要調(diào)用返回值是 String 的方法還是 返回值是 int 的方法。即陷入了一種“模棱兩可”的局面。
總結(jié):
通過兩個示例展示了,java為了避免編譯器無法從所有上下文中找出重載而陷入“模棱兩可”的局面,因此java方法簽名中只有兩個要素:方法名稱和參數(shù)列表。不包含返回值類型。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務端
MQTT是一種輕量級的消息傳輸協(xié)議(Message Queuing Telemetry Transport),旨在實現(xiàn)設備之間的低帶寬和高延遲的通信,本文給大家介紹了SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務端,需要的朋友可以參考下2024-04-04
java如何實現(xiàn)項目啟動時執(zhí)行指定方法
這篇文章主要為大家詳細介紹了java項目如何啟動時執(zhí)行指定方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Java動態(tài)線程池插件dynamic-tp集成過程淺析
這篇文章主要介紹了Java動態(tài)線程池插件dynamic-tp集成過程,dynamic-tp是一個輕量級的動態(tài)線程池插件,它是一個基于配置中心的動態(tài)線程池,線程池的參數(shù)可以通過配置中心配置進行動態(tài)的修改2023-03-03
SpringBoot雪花算法主鍵ID傳到前端后精度丟失問題的解決
本文主要介紹了SpringBoot雪花算法主鍵ID傳到前端后精度丟失問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08

