java如何从可用于多种类类型的方法中返回实际类型而不是对象类型?
有没有办法修改SubService
中的findModel
方法以返回Foo
或Boo
类型而不是Object
类型
我希望能够从FooService
或BooService
调用findModel
,而无需强制转换到Foo
或Boo
模型对象强>
可能吗
子服务:
public Object findModel(long id, Class modelClass) {
Object modelObject = null;
javax.jdo.Query query = persistenceManager.newQuery(modelClass);
query.setFilter("id == idParam");
query.declareParameters("long idParam");
List<Object> modelObjects = (List<Object>) query.execute(id);
if(modelObjects.isEmpty()){
modelObject = null;
}
else{
modelObject = modelObjects.get(0);
}
return modelObject;
}
FooService扩展了子服务:
public Foo getFoo(long id) {
Foo modelObject = (Foo)this.findModel(id, Foo.class);
return modelObject;
}
BooService扩展了子服务:
public Boo getBoo(long id) {
Boo modelObject = (Boo)this.findModel(id, Boo.class);
return modelObject;
}
# 1 楼答案
使用泛型重新定义方法:
现在它将返回你需要的,你不需要铸造
# 2 楼答案
将findModel中的对象强制转换为
SubService
然后,您可以在FoooService中放弃该角色