Java方法簽名為何不包含返回值類(lèi)型
看下官方說(shuō)明:

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

在示例二中,如果m123() 方法有多個(gè)返回值,那么編譯器就無(wú)法為 println() 方法決定到底要調(diào)用返回值是 String 的方法還是 返回值是 int 的方法。即陷入了一種“模棱兩可”的局面。
總結(jié):
通過(guò)兩個(gè)示例展示了,java為了避免編譯器無(wú)法從所有上下文中找出重載而陷入“模棱兩可”的局面,因此java方法簽名中只有兩個(gè)要素:方法名稱(chēng)和參數(shù)列表。不包含返回值類(lèi)型。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. IntelliJ IDEA恢復(fù)刪除文件的方法2. 使用Maven 搭建 Spring MVC 本地部署Tomcat的詳細(xì)教程3. IntelliJ IDEA設(shè)置默認(rèn)瀏覽器的方法4. IntelliJ IDEA導(dǎo)入jar包的方法5. idea刪除項(xiàng)目的操作方法6. IntelliJ IDEA設(shè)置自動(dòng)提示功能快捷鍵的方法7. idea重置默認(rèn)配置的方法步驟8. idea導(dǎo)入maven項(xiàng)目的方法9. IntelliJ IDEA安裝插件的方法步驟10. Docker 部署 Prometheus的安裝詳細(xì)教程

網(wǎng)公網(wǎng)安備