我有一個(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)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()
方法)!
添加回答
舉報(bào)
0/150
提交
取消