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

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

使用 java 泛型類型進(jìn)行類型轉(zhuǎn)換

使用 java 泛型類型進(jìn)行類型轉(zhuǎn)換

白板的微信 2022-11-02 15:15:54
我有一個(gè)Object o可以轉(zhuǎn)換為類型 A 和類型 B的函數(shù)。我需要一個(gè)transformForType(Type t, Object o)接受類型的函數(shù),比如說 A 或 B,并檢查是否為該類型并對(duì)其進(jìn)行處理以對(duì)其進(jìn)行轉(zhuǎn)換。該函數(shù)的用法是這樣的:B result = tranformForType(B.class, o);我的問題是定義tranformForType函數(shù)的方法是什么,如果可能的話,使用泛型類型的最佳方法是什么。問候。
查看完整描述

2 回答

?
紅顏莎娜

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

該類Class已經(jīng)有一個(gè)在運(yùn)行時(shí)強(qiáng)制轉(zhuǎn)換對(duì)象的方法——cast方法

將對(duì)象強(qiáng)制轉(zhuǎn)換為該Class對(duì)象表示的類或接口。

你只需要調(diào)用它。它會(huì)ClassCastException像普通演員一樣拋出。

B result = B.class.cast(o);


查看完整回答
反對(duì) 回復(fù) 2022-11-02
?
尚方寶劍之說

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

一個(gè)簡(jiǎn)單的方法是:

static <T> T transformForType(Class<T>, Object o) { ...

那個(gè)對(duì)那個(gè) T 類型沒有任何限制,但是當(dāng)然,如果 A/B 實(shí)現(xiàn)相同的接口,或者具有相同的基類,你可以進(jìn)一步細(xì)化那個(gè) T:

static <T extends ABInterface> T transformForType(Class<T>, Object o) { ...

例如。

請(qǐng)注意:顯然,當(dāng)您對(duì)要投射的類型沒有任何限制時(shí),您可以選擇另一個(gè)答案并調(diào)用SomeClass.class.cast(). 但是,如果您只想允許特定類型,您可能想要使用這樣的transformForType()方法(然后將使用該cast()方法)!


查看完整回答
反對(duì) 回復(fù) 2022-11-02
  • 2 回答
  • 0 關(guān)注
  • 546 瀏覽

添加回答

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