1
注入泛型我想使用泛型注入情況下,我得到以下錯誤:與roboguice
HasOne<ModelClass> cannot be used as a key; It is not fully specified.
我讀過其他地方最安全的方式做到這一點是明確命名類在使用注入器來獲取實例時用於通用,但我想成爲一個小清潔工。我試圖在Models
之間創建Relationship
對象。
這裏是我的簡化Model
類
public class Model {
@Inject
Injector injector;
public <ModelClass extends Model> HasOne<ModelClass> hasOne(Class<ModelClass> clazz) {
HasOne<ModelClass> hasOne = injector.getInstance(Key.get(new TypeLiteral<HasOne<ModelClass>>() {
}));
hasOne.init(clazz);
return hasOne;
}
}
我HasOne
關係
public class HasOne<T extends Model> {
Class clazz;
public void init(Class<T> clazz){
this.clazz = clazz;
}
@Inject
Injector injector;
public T get(){
return (T) injector.getInstance(clazz);
}
}
測試Model
#1
public class TestModel extends Model {
public HasOne<ExampleModel> exampleModel(){
return hasOne(ExampleModel.class);
}
}
測試Model
#2
public class ExampleModel extends Model {
}
我做這個
TestModel testModel = RoboGuice.getInjector(context).getInstance(TestModel.class);
HasOne<ExampleModel> relationship = testModel.exampleModel();
當我試圖掩蓋掉醜關係創造和保持它在Model
類
輝煌!謝謝! – David
+1000。宏偉的迴應,我一直在尋找這個解決方案來解決我的問題,我不知道什麼時候。我幾乎到了將Autofac改編爲Android的時候了。 – Joseph