我有一个用于创建模型实例的工厂。工厂提供了这个方法:
public <Model> Model createFromJson(String json, final Class<Model> model) {
Model modelInstance = gson.fromJson(json, model);
((IModel)modelInstance).onCreateFromJson();
return modelInstance;
}
如您所见,我将模型的实例(以前作为类方法参数给出)转换为接口,因此我可以调用特定的方法。此外,通用返回类型也很好用,因为调用者不能强制转换任何对象。只需调用:
MyModel myModel = ModelFactory.getInstance().createFromJson(json, MyModel.class);
但是,不幸的是,我可以使用任何类型的对象调用工厂方法,例如:
Integer myTest = ModelFactory.getInstance().createFromJson(json, Integer.class);
所以我想将工厂方法参数定义为 IModel 类型。但我不知道如何,因为我传递的是一个类,而不是模型(IModel)的实例。
所以,实际上我正在寻找这样的东西:
public <Model<? extends IModel>> Model
createFromJson(String json, final Class<Model<? extends IModel>> model)
谁能给我建议?