我正在使用 Apache thrift,它生成如下所示的 Java 類:public class MyEvent implements org.apache.thrift.TBase<MyEvent, MyEvent._Fields>我想創(chuàng)建一個容器類,它采用實現(xiàn) TBase 的泛型。我想編寫如下代碼:(科特林)val msg = MyContainer<MyEvent>()但是,我不能這樣做class MyContainer<T: TBase>,因為我需要填寫 TBase 的兩個參數(shù),我做了這樣的事情:class MyContainer<T: TBase<T,F>, F: TFieldIdEnum>但是,這需要我編寫如下代碼:val msg = MyContainer<MyEvent, MyEvent._Fields>()我想這是可行的,否則可以讓我獲得我需要的功能,但無論如何我可以更簡潔地告訴 java “我需要一個 T 來實現(xiàn) TBase 類型 T 和 T._Fields”,所以我可以做嗎val msg = MyContainer<MyEvent>()?
1 回答

守著一只汪
TA貢獻1872條經(jīng)驗 獲得超4個贊
如果它只是一個容器,你可以使用星投影:
class MyContainer<T: TBase<T,*>>
那會val msg = MyContainer<MyEvent>()
成功的。當(dāng)您無論如何都使用反射來處理對象時,這種技術(shù)有時很有用,例如 Protobuf 和 Thrift。
但是你的問題沒有給出你打算如何使用這個容器的提示。
添加回答
舉報
0/150
提交
取消