沒有Union Type真的好難受啊
是這樣的,本來我需要一個呼叫一個轉換工具把 Bla 轉成一個特定物件,但是因為Jawa的型別擦除,不得不換一些神奇的方式,把型別引用或者類物件傳遞過去。
大概對應的介面如下:
shit.<T>doWithBla(Bla bla, TypeRef<T> t) -> T shit.<T>doWithBla(Bla bla, Class<T> cls) -> T
本來期待如果有一個合適的辦法能夠這樣搞:
fuck.<T>doSomethingElse(Bla bla, TypeRef<T> | Class<T> typeInfo) => T { var t = shit.doWithBla(bla, typeInfo) ... return t; }
但是明顯沒有這種非常合理的語法。
所以我嘗試是不是能夠用泛型繞過去
fuck.<T, TypeInfo extends TypeRef<T> | Class<T>>doSomethingElse(Bla bla, TypeInfo typeInfo) -> T { var t = shit.doWithBla(bla, typeInfo) ... return t; }
然而泛型約束裡面只能用 & 不能用 | 的。
如果是別的,我可能還會嘗試HKT
fuck.<T, TypeInfo<?>>.doSomethingElse(Bla bla, TypeInfo<T> typeInfo) -> T { var t = shit.doWithBla(bla, typeInfo) ... return t; }
當然還是不可能的。
只能寫重複的寫兩個幾乎一毛一樣的方法。哭。