最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java重載方法匹配優(yōu)先級的實現(xiàn)示例

 更新時間:2025年12月11日 09:53:26   作者:Java勸退師、  
本文通過一個示例詳細闡述了Java中方法重載的匹配優(yōu)先級,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在我們學習Java的時候關于重載有個小的知識點叫方法重載匹配優(yōu)先級。雖然javac編譯器能確定方法的重載版本,但是在很多情況下重載的版本并不是唯一的,往往只能確定一個相對合適的版本。請看以下代碼你覺得輸出的內容是什么呢?(可以先不要翻到代碼結束后的答案嘗試猜測)

package cn.laoniu;

import java.io.Serializable;

public class Reload {

	public void sayType(Character arg) {
		System.out.println("Character");
	}

	public void sayType(long arg) {
		System.out.println("long");
	}

	public void sayType(char arg) {
		System.out.println("char");
	}

	public void sayType(char... arg) {
		System.out.println("char...");
	}

	public void sayType(Serializable arg) {
		System.out.println("Serializable");
	}

	public void sayType(int arg) {
		System.out.println("int");
	}

	public void sayType(Object arg) {
		System.out.println("Object");
	}

	public static void main(String[] args) {
		new Reload().sayType('a');
	}

}

上面代碼的運行后輸出結果為:

char

這很好理解,'a'是一個char類型的數(shù)據(jù),自然會尋找參數(shù)類型為char的重載方法,如果注釋掉sayType(char arg)方法,那么輸出結果會變?yōu)椋?/p>

int

這時發(fā)生了一次自動類型轉換,'a'除了可以代表一個字符串,還可以代表數(shù)字97(字符'a'的Unicode數(shù)值為十進制數(shù)字97),因此參數(shù)類型為int的重載也是合適的。我們繼續(xù)注釋掉sayType(int arg)方法,那么輸出的結果會變?yōu)椋?/p>

long

這時發(fā)生了兩次類型轉換,'a'轉型為整數(shù)97之后,進一步轉型為長整數(shù)97L,匹配參數(shù)類型為long的重載。雖然上面代碼中沒有加入其他類型如float、double等的重載,在實際上自動轉型還能繼續(xù)發(fā)生多次,按照char>int>long>float>double的順序進行匹配,但是不會匹配到byte和short類型的重載,因為char到byte和short的轉型是不安全的。我們繼續(xù)注釋掉sayType(long arg)方法,那么輸出的結果變?yōu)椋?/p>

Character

這時發(fā)生了一次自動裝箱,'a'被包裝為它的封裝類型java.lang.Character,所以匹配到了參數(shù)類型為Character的重載,繼續(xù)注釋掉sayType(Character arg)方法,那么輸出的結果會變?yōu)椋?/p>

Serializable

這個輸出可能會讓人感到疑惑,一個字符或數(shù)字與序列化有什么關系呢?出現(xiàn)Serializable是因為java.lang.Serializable是java.lang.Character類實現(xiàn)的一個接口,當自動裝箱之后發(fā)現(xiàn)還是找不到裝箱類,但是找到了裝箱類所實現(xiàn)的接口類型,所以緊接著又發(fā)生了一次自動轉型。char可以轉型為int,但是Character是絕對不會轉型為Integer的,它只能安全地轉型為它實現(xiàn)的借口或者父類。Character還實現(xiàn)了另外一個接口java.lang.Compara<Character>,如果同時出現(xiàn)兩個參數(shù)分別是Serializable和Compara<Character>的重載方法,那它們在此時的優(yōu)先級是一樣的。編譯器無法確定要自動轉型為哪種類型,會提示“類型模糊”(Type Ambiguous),并拒絕編譯。讓我們繼續(xù)注釋掉sayType(Serializable arg)方法,輸出結果會變?yōu)椋?/p>

Object

這時是char裝箱后轉型為父類了,如果有多個父類,那么繼承關系從下往上搜索,越往上層優(yōu)先級越低。即便方法調用傳入?yún)?shù)值null時,這個規(guī)則仍然適用。繼續(xù)把sayType(Object arg)方法注釋掉,結果會變?yōu)椋?/p>

char...

此時就剩下這一個方法了,可見變長參數(shù)的重載優(yōu)先級是最低的。

補充

上面例子演示了Java重載方法優(yōu)先匹配級別,這也屬于java編譯期間選擇靜態(tài)分配目標。這個例子是很極端的例子,除了作為面試題來為難應聘者之外在實際工作中幾乎不存在任何價值

到此這篇關于Java重載方法匹配優(yōu)先級的實現(xiàn)那示例的文章就介紹到這了,更多相關Java重載方法匹配優(yōu)先級內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 一文帶你搞懂Spring?AI核心接口,輕松對接所有大模型

    一文帶你搞懂Spring?AI核心接口,輕松對接所有大模型

    Spring?AI簡單說就是?Spring?官方為?Java?開發(fā)者打造的?AI?應用開發(fā)框架,本文將從頂層?ChatClient?到底層?Model,逐層拆解?Spring?AI?的核心接口設計,幫你徹底理清這套萬能轉接頭的工作原理
    2026-05-05
  • springboot集成mybatis?plus和dynamic-datasource注意事項說明

    springboot集成mybatis?plus和dynamic-datasource注意事項說明

    這篇文章主要介紹了springboot集成mybatis?plus和dynamic-datasource注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringMVC Restful api接口實現(xiàn)的代碼

    SpringMVC Restful api接口實現(xiàn)的代碼

    本篇文章主要介紹了SpringMVC Restful api接口實現(xiàn)的代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 一小時迅速入門Mybatis之增刪查改篇

    一小時迅速入門Mybatis之增刪查改篇

    這篇文章主要介紹了迅速入門Mybatis之增刪查改篇,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • JAVA控制流程break?continue的示例代碼

    JAVA控制流程break?continue的示例代碼

    JAVA流程控制中有相關代碼可以終止整個流程的進程,他們就是(break和continue),本文通過實例代碼介紹下JAVA控制流程break?continue的相關知識,感興趣的朋友一起看看吧
    2022-03-03
  • Java volatile的適用場景實例詳解

    Java volatile的適用場景實例詳解

    在本文里我們給大家整理了一篇關于Java volatile的適用場景實例內容和知識點,需要的朋友們可以學習下。
    2019-08-08
  • 從零開始:快速入門SpringBoot注解的精髓

    從零開始:快速入門SpringBoot注解的精髓

    Spring?Boot是一個用于快速構建基于Spring框架的應用程序的開源框架,它通過使用注解來簡化配置和開發(fā)過程,使開發(fā)人員能夠更加專注于業(yè)務邏輯的實現(xiàn),Spring?Boot提供了許多注解,用于定義和配置應用程序的各個方面,需要的朋友可以參考下
    2023-10-10
  • 圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類

    圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類

    這篇文章主要以圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類,本文主要以Mysql數(shù)據(jù)庫為例,應該會對大家有所幫助,如果有錯誤的地方,還望指正
    2023-03-03
  • 深入理解Spring的事務傳播行為

    深入理解Spring的事務傳播行為

    spring特有的事務傳播行為,spring支持7種事務傳播行為,確定客戶端和被調用端的事務邊界(說得通俗一點就是多個具有事務控制的service的相互調用時所形成的復雜的事務邊界控制),這篇文章主要給大家介紹了關于Spring事務傳播行為的相關資料,需要的朋友可以參考下。
    2018-02-02
  • 關于SpringBoot創(chuàng)建存儲令牌的媒介類和過濾器的問題

    關于SpringBoot創(chuàng)建存儲令牌的媒介類和過濾器的問題

    這篇文章主要介紹了SpringBoot創(chuàng)建存儲令牌的媒介類和過濾器的問題,需要在配置文件中,添加JWT需要的密匙,過期時間和緩存過期時間,具體實例代碼參考下本文
    2021-09-09

最新評論

佳木斯市| 淮北市| 刚察县| 城固县| 莒南县| 桂东县| 尼木县| 孝义市| 塘沽区| 镇沅| 沛县| 南皮县| 黑龙江省| 仙居县| 锡林浩特市| 扎鲁特旗| 岢岚县| 库尔勒市| 托里县| 梧州市| 介休市| 巍山| 江油市| 平乡县| 郑州市| 县级市| 彭州市| 灯塔市| 呼图壁县| 旬阳县| 崇明县| 清水县| 泌阳县| 铜川市| 阿拉善盟| 资兴市| 巴楚县| 黔南| 泗洪县| 阜宁县| 三江|