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

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

Kotlin:擴(kuò)展動(dòng)態(tài)給定的超類型

Kotlin:擴(kuò)展動(dòng)態(tài)給定的超類型

一只甜甜圈 2022-06-15 17:12:38
假設(shè)我有課程:class A : SuperType() {}class B : SuperType() {}class C : B() {}假設(shè)我不想C再擴(kuò)展B():我希望它擴(kuò)展A(),但現(xiàn)在我想A擴(kuò)展B()。如何在編譯時(shí)A擴(kuò)展B()(或任何子級SuperType())而不是僅擴(kuò)展SuperType()?換句話說,我怎樣才能使類A聲明通用以接受任何孩子SuperType()?希望很清楚。我想做類似的事情:class B(whatever_it_receives_as_long_as_child_of_SuperType) : whatever_it_receives_as_long_as_child_of_SuperType()class C : A(B())    // B is subtype of SuperType so it's ok
查看完整描述

2 回答

?
小怪獸愛吃肉

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

如何在編譯時(shí)生成 A 擴(kuò)展 B()(或 SuperType() 的任何子級),而不僅僅是 SuperType()?

你不能。每個(gè)類只能擴(kuò)展一個(gè)固定的超類。

我認(rèn)為你能得到的最接近的是

class A(x: SuperType): SuperType by x

(請參閱文檔)但這需要SuperType是一個(gè)接口而不是一個(gè)類。


查看完整回答
反對 回復(fù) 2022-06-15
?
呼如林

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

您可以執(zhí)行以下操作:


open class SuperType {}

open class A(val obj: SuperType) : B() {}

open class B : SuperType() {}

class C : A(B())

或使用泛型:


open class SuperType {}

open class A<T: SuperType>(val obj: T) : B() {}

open class B : SuperType() {}

class C : A<B>(B())


查看完整回答
反對 回復(fù) 2022-06-15
  • 2 回答
  • 0 關(guān)注
  • 158 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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