第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么不能在 Java 中調(diào)用空指針上的方法?

為什么不能在 Java 中調(diào)用空指針上的方法?

Go
冉冉說 2021-06-17 18:15:33
在 Go 中,可以在空指針上調(diào)用方法,只要該指針永遠(yuǎn)不會(huì)被取消引用:type empty struct{}func (e *empty) Allocated() bool { return e != nil }(對(duì)于可運(yùn)行的代碼,請(qǐng)單擊此處)然而,在 Java 中,在空指針上調(diào)用方法,即使該方法從不取消對(duì)任何成員變量的引用,仍然會(huì)導(dǎo)致空指針異常:class Test {    public boolean Allocated() { return this != null; }}有人知道為什么存在這種行為嗎?它有什么好處嗎?想法?
查看完整描述

3 回答

?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

這是因?yàn)樗?Java 方法都是虛擬的。

編寫時(shí)someInstance.Allocated(),運(yùn)行時(shí)需要檢查是否someInstance實(shí)際上是覆蓋該方法的派生類型。

從理論上講,此限制本可以針對(duì)finalprivate方法放寬。
我假設(shè)語言設(shè)計(jì)者選擇不這樣做是為了一致性。(因此刪除final不會(huì)是一個(gè)重大變化)



查看完整回答
反對(duì) 回復(fù) 2021-06-21
?
MM們

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊

我認(rèn)為這是一個(gè)哲學(xué)問題;方法(靜態(tài)方法除外)就其本質(zhì)而言適用于對(duì)象,并且在這種范式中調(diào)用像“null”這樣的非對(duì)象上的方法是沒有意義的。如果您想定義一個(gè)可以應(yīng)用于對(duì)象或“null”的方法,那么定義一個(gè)靜態(tài)方法就足夠容易了,而且在我看來,這將使調(diào)用該方法的代碼不會(huì)讓讀者感到困惑。


查看完整回答
反對(duì) 回復(fù) 2021-06-21
  • 3 回答
  • 0 關(guān)注
  • 298 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)