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

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

Java中的標(biāo)記接口?

Java中的標(biāo)記接口?

ITMISS 2019-10-24 15:10:52
我被告知Java中的Marker接口是一個(gè)空接口,用于向編譯器或JVM發(fā)出信號(hào),告知實(shí)現(xiàn)該接口的類的對(duì)象必須以特殊方式處理,例如序列化,克隆等。但是最近我了解到它實(shí)際上與編譯器或JVM無關(guān)。例如,在使用Serializable接口的情況下,的方法writeObject(Object)會(huì)ObjectOutputStream執(zhí)行類似的操作instanceOf Serializable來檢測(cè)類是否相應(yīng)地實(shí)現(xiàn)Serializable和拋出NotSerializableException。一切都在代碼中處理,這似乎是一種設(shè)計(jì)模式,所以我認(rèn)為我們可以定義自己的標(biāo)記接口。現(xiàn)在我的疑問:上面第一點(diǎn)提到的標(biāo)記接口的定義是否錯(cuò)誤?那么我們?nèi)绾味xMarker接口呢?并且instanceOf為什么不使用運(yùn)算符而不是使用運(yùn)算符,所以為什么要使用writeObject(Serializable)編譯時(shí)類型檢查而不是運(yùn)行時(shí)呢?注釋比標(biāo)記接口如何好?
查看完整描述

3 回答

?
幕布斯7119047

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

  1. 上面第一點(diǎn)提到的標(biāo)記接口的定義是否錯(cuò)誤?-在以下部分中是正確的:(1)標(biāo)記接口必須為空,并且(2)實(shí)現(xiàn)該接口意味著要對(duì)實(shí)現(xiàn)類進(jìn)行某些特殊處理。不正確的部分是,這意味著JVM或編譯器將以不同的方式對(duì)待該類的對(duì)象:您正確地觀察到是Java類庫(kù)的代碼將這些對(duì)象視為可克隆,可序列化等。與編譯器或JVM無關(guān)。

  2. 而不是使用instanceOf運(yùn)算符,為什么該方法不能這樣,writeObject(Serializable)以至于進(jìn)行編譯時(shí)類型檢查 -這樣可以避免在需要“普通Object” 時(shí)用標(biāo)記接口的名稱污染代碼。例如,如果您創(chuàng)建一個(gè)需要可序列化并且具有對(duì)象成員的類,那么您將不得不進(jìn)行強(qiáng)制轉(zhuǎn)換或Serializable在編譯時(shí)創(chuàng)建對(duì)象。這很不方便,因?yàn)樵摻涌跊]有任何功能。

  3. 注釋比標(biāo)記接口如何好?-它們使您達(dá)到了將有關(guān)類的元數(shù)據(jù)傳送給其使用者的相同目的,而無需為其創(chuàng)建單獨(dú)的類型。注釋也更加強(qiáng)大,它使程序員可以將更復(fù)雜的信息傳遞給“消費(fèi)”它的類。


查看完整回答
反對(duì) 回復(fù) 2019-10-24
?
慕尼黑的夜晚無繁華

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

不能強(qiáng)制執(zhí)行Serializable,writeObject因?yàn)椴豢尚蛄谢惖淖蛹?jí)可以序列化,但是它們的實(shí)例可能被向上轉(zhuǎn)換回父類。因此,持有對(duì)無法序列化的內(nèi)容(例如Object)的引用并不意味著所引用的實(shí)例確實(shí)無法序列化。例如在


   Object x = "abc";

   if (x instanceof Serializable) {

   }

父類(Object)無法序列化,可以使用其無參數(shù)構(gòu)造函數(shù)進(jìn)行初始化。通過引用的價(jià)值x,String是序列化的條件語句將運(yùn)行。


查看完整回答
反對(duì) 回復(fù) 2019-10-24
?
紅糖糍粑

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

a /標(biāo)記接口,顧名思義,僅存在于通知類的任何東西都在聲明一個(gè)類。任何東西都可以是Serializable接口的JDK類,也可以是您為自定義類編寫的任何類。

b /如果它是標(biāo)記接口,則不應(yīng)暗示存在任何方法-最好在接口中包含隱含方法。但你可以決定要設(shè)計(jì)它,只要你想,如果你知道為什么 需要它

c /空接口和不使用值或參數(shù)的注釋之間幾乎沒有區(qū)別。但是區(qū)別在于:注釋可以聲明鍵/值的列表,這些鍵/值將在運(yùn)行時(shí)訪問。


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

添加回答

舉報(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)