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

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

java中標(biāo)記接口的意義是什么?為什么沒有它們我們就不能繼續(xù)下去?

java中標(biāo)記接口的意義是什么?為什么沒有它們我們就不能繼續(xù)下去?

白衣染霜花 2024-01-05 10:20:30
我已經(jīng)閱讀了有關(guān)標(biāo)記接口的內(nèi)容,并且對(duì)如何在代碼中使用它們有了一些了解,但我不明白為什么我們需要它們以及引入這個(gè)概念的原因是什么。我在互聯(lián)網(wǎng)上搜索,所有答案都是“它們向 JVM 提供一些基本信息,以便 JVM 可以執(zhí)行一些有用的操作”,但問題是為什么 JVM 需要知道這一點(diǎn)以及 JVM 可能執(zhí)行哪些操作必須執(zhí)行?為什么我不能只克隆對(duì)象而不從 Clonable 擴(kuò)展類?為什么我不能序列化類對(duì)象而不從 Serialized 擴(kuò)展它?標(biāo)記界面沒有多大意義,在我看來顯然不是一個(gè)好的設(shè)計(jì)。沒有任何方法的接口???重點(diǎn)是什么?現(xiàn)在顯然這里使用注釋而不是標(biāo)記接口,但問題仍然是為什么 JVM 需要知道?
查看完整描述

4 回答

?
holdtom

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

您清楚地了解標(biāo)記接口的作用。你自己也這么說啊!

那么為什么我們還需要它們呢?

從某種意義上說,我們不需要它們。任何可以用標(biāo)記接口表達(dá)的東西都可以用注釋來表達(dá)。毫無疑問,注釋是解決問題的一種更簡潔的方法。

我們(仍然)擁有標(biāo)記接口的根本原因是歷史

  • Java 注釋是在 Java 5.0 中添加到 Java 語言中的。在此之前,標(biāo)記接口是可用的最佳解決方案。

  • 從類中刪除標(biāo)記接口會(huì)破壞二進(jìn)制兼容性。

  • 有少量 Java SE 標(biāo)記接口早于 Java 5.0,并廣泛用于用戶代碼中。我想到的兩個(gè)是SerializableCloneable。

無論我們喜歡與否,Java 都有標(biāo)記接口,而且這一點(diǎn)不太可能改變。


標(biāo)記界面沒有多大意義,在我看來顯然不是一個(gè)好的設(shè)計(jì)。

嗯,是。從2019年的角度來看,確實(shí)如此。

從 1997 年的角度來看,當(dāng)時(shí) Java 還很新,C# 也已經(jīng)面世 5 年了,唯一具有注釋之類的主流語言是 LISP 版本。

現(xiàn)在我非常確定,早在 Java 1.0 時(shí)代,Java 類庫的設(shè)計(jì)者就意識(shí)到標(biāo)記接口是一個(gè)有缺陷的想法。但他們別無選擇。它是使用標(biāo)記接口,或者將一些漂亮的 Java 基礎(chǔ) API 的設(shè)計(jì)和實(shí)現(xiàn)推遲 5 年或更長時(shí)間。

在企業(yè)計(jì)算領(lǐng)域,您需要做出妥協(xié)才能完成工作。


查看完整回答
反對(duì) 回復(fù) 2024-01-05
?
青春有我

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

您不需要實(shí)現(xiàn) Serialized 來進(jìn)行序列化,也不需要實(shí)現(xiàn) Cloneable 來進(jìn)行克隆。這些接口的要點(diǎn)在于,Java 內(nèi)置了用于克隆和序列化的機(jī)制,如果您希望使用這些內(nèi)置機(jī)制,則只需實(shí)現(xiàn)這些接口即可。

因此,只需實(shí)現(xiàn) Serialized,您就可以自動(dòng)將該類與 ObjectInputStream 和 ObjectOutputStream 一起使用,而無需任何額外的代碼。

另一方面,我發(fā)現(xiàn)可克隆幾乎毫無用處。通常,您只需實(shí)現(xiàn) Cloneable 并覆蓋Object.clone并將其公開,然后您就可以立即進(jìn)行克隆。但據(jù)說它被破壞了,你最好只編寫自己的克隆邏輯,就像使用復(fù)制構(gòu)造函數(shù)一樣。


查看完整回答
反對(duì) 回復(fù) 2024-01-05
?
白豬掌柜的

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

我可以回答你的部分問題 - java中標(biāo)記接口的意義是什么?


通過引入注解,Java 為我們提供了一種替代方法來實(shí)現(xiàn)與標(biāo)記接口相同的結(jié)果。此外,與標(biāo)記接口一樣,我們可以將注釋應(yīng)用于任何類,并且可以將它們用作執(zhí)行某些操作的指示符。


那么關(guān)鍵的區(qū)別是什么?


與注釋不同,接口允許我們利用多態(tài)性。因此,我們可以向標(biāo)記接口添加額外的限制。


例如,讓我們添加一個(gè)限制,即只能從數(shù)據(jù)庫中刪除 Shape 類型:


public interface Shape {

    double getArea();

    double getCircumference();

}

在這種情況下,我們的標(biāo)記界面(我們稱之為 DeletableShape)將如下所示:


public interface DeletableShape extends Shape {

}

然后我們的類將實(shí)現(xiàn)標(biāo)記接口:


public class Rectangle implements DeletableShape {

    // implementation details

}

因此,所有DeletableShape 實(shí)現(xiàn)也是 Shape 實(shí)現(xiàn)。顯然,我們不能使用注釋來做到這一點(diǎn)。


然而,每個(gè)設(shè)計(jì)決策都需要權(quán)衡,多態(tài)性可以用作針對(duì)標(biāo)記接口的反駁。在我們的示例中,每個(gè)擴(kuò)展 Rectangle 的類都會(huì)自動(dòng)實(shí)現(xiàn) DeletableShape。


這可能無法提供您想要的確切答案。但可以部分幫助你。


查看完整回答
反對(duì) 回復(fù) 2024-01-05
?
天涯盡頭無女友

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

任何類都可以實(shí)現(xiàn)它而無需添加任何額外的方法/字段/開銷

您只需標(biāo)記類即可使用/序列化

即使在 Java 5.0 引入注釋之后,

仍然還有@Configuration標(biāo)記注釋

@Configuration注解用于基于Spring注解的配置。@Configuration 是一個(gè)標(biāo)記注釋,它指示一個(gè)類聲明一個(gè)或多個(gè) @Bean 方法,并且可以由 Spring 容器處理以在運(yùn)行時(shí)生成 bean 定義和這些 bean 的服務(wù)請(qǐng)求


查看完整回答
反對(duì) 回復(fù) 2024-01-05
  • 4 回答
  • 0 關(guān)注
  • 221 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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