-1

最终,我需要能够在我的代码中做到这一点:

User result = goo.getEntity("users", "id1").getAs(User.class);  

但是,在上面的代码中,我需要明确地将结果转换为getEntityto User,方法是什么,以便返回类型getAs将是任何 .class 放入方法中。

这是底层的伪代码:

public class EntityType {
    Map json = null;
    public EntityType(Map json){
        this.json = json;
    }
    public Class<?> getAs(Class<?> clazz){
        // create clazz object from json map 
    }
}

public EntityType getEntity(String kind, String id){
    Map json = getFromServer(kind, id);
    EntityType entity = new EntityType(json);
    return entity;
}
4

2 回答 2

5

它应该是

public <T> T getAs(Class<T> clazz) {

注意:您将返回分配为User result =,返回类型应该是T而不是Class<T>

于 2012-11-15T08:11:54.597 回答
0
public class EntityType {
    Map json = null;
    public EntityType(Map json){
        this.json = json;
    }
    public <T extends EntityType> T getAs(Class<T> clazz){
        if(clazz.isInstance(this)) {
          return (T) this;
        }
        return null;
    }
}
于 2012-11-15T08:12:01.687 回答