我有通用類:public class MyGenericClass<T> { T get(){ return T; } ...}有2個類:public class CatService{ MyGenericClass<Cat> generic; public CatService(MyGenericClass<Cat> generic){ this.generic = generic; }}public class DogService{ MyGenericClass<Dog> generic; public DogService(MyGenericClass<Dog> generic){ this.generic = generic; }}我認為最好創建public abstact class Service:public abstract class Service { MyGenericClass generic; public MyGenericClass (MyGenericClass generic){ this.generic = generic; }}并使CatService和DogService 擴展這個抽象服務。他們將在調用super(MyGenericClass generic)或super(MyGenericClass generic)的構造函數中初始化泛型字段。但是在這種情況下,當我嘗試調用 MyGenericClass 方法時,我收到“unchecked call”,當我嘗試調用 T get() 時,我必須使用(Cat) generic.get() OR (Dog) generic.get();有可能避免嗎?更新:需要指定泛型類型:extends Service<Cat>public class CatService extends Service<Cat> { public CatService(MyGenericClass<Cat> generic){ super(generic); }}public abstract class Service<T> { MyGenericClass<T> generic; public MyGenericClass (MyGenericClass<T> generic){ this.generic = generic; }}
1 回答

翻閱古今
TA貢獻1780條經驗 獲得超5個贊
使Service類也通用。
public abstract class Service<T> {
MyGenericClass<T> generic;
public MyGenericClass (MyGenericClass<T> generic){
this.generic = generic;
}
}
添加回答
舉報
0/150
提交
取消