亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個類可以有兩個同名的無參數方法嗎?

一個類可以有兩個同名的無參數方法嗎?

隔江千里 2023-07-28 10:15:52
我對這句話感到困惑:服務提供者類文件有多個名為public static“”的無參數方法provider。假設 JavaDoc 是正確的,并且假設static成員不是繼承的,那么這在 Java 中怎么可能呢?或者這是JavaDoc中的錯誤?
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

這在 Java 中怎么可能實現?

事實并非如此,因為方法簽名必須是唯一的,而簽名是方法名稱和參數類型。

不過,這不是 JVM 的工作原理,而是 Java 的工作原理。

JVM 將返回類型作為簽名的一部分,因此從技術上講,一個類可以具有多個具有相同名稱和參數但返回類型不同的方法。

所以對于用其他 JVM 語言編寫的類肯定會發生這種情況,但是對于 Java 類會發生這種情況嗎?

是的,當您有重寫方法的協變返回類型時,它可以。真正發生的是這個假代碼:

class ShapeBuilder {

? ? ...

? ? public Shape build() {

? ? ....

}


class CircleBuilder extends ShapeBuilder{

? ? ...

? ? @Override

? ? public bridge Shape build() { // override matches full JVM signature

? ? ? ? return <Circle>build(); // call other method with different return type

? ? }

? ? public Circle build() {

? ? ....

}

“橋接”方法是編譯器生成的一種隱藏方法,用于使Java和JVM之間的差異正常工作。


僅供參考:在這方面,“橋”方法類似于“合成”方法,它們由編譯器生成,以允許外部類訪問private內部類的成員,反之亦然。


查看完整回答
反對 回復 2023-07-28
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號