有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从可用于多种类类型的方法中返回实际类型而不是对象类型?

有没有办法修改SubService中的findModel方法以返回FooBoo 类型而不是Object类型

我希望能够从FooServiceBooService调用findModel,而无需强制转换到FooBoo模型对象

可能吗

子服务:

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;

}

共 (2) 个答案

  1. # 1 楼答案

    使用泛型重新定义方法:

    public <T> T findModel(long id, Class<T> modelClass)
    

    现在它将返回你需要的,你不需要铸造

  2. # 2 楼答案

    将findModel中的对象强制转换为SubService

    public SubService findModel(long id, Class modelClass)  {
         return (SubService) modelObject;
    }
    

    然后,您可以在FoooService中放弃该角色

    Foo modelObject = this.findModel(id, Foo.class);