从Class <! - ? - >创建对象

时间:2012-11-15 08:09:16

标签: java

最终,我需要能够在我的代码中执行此操作:

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

但是,在上面的代码中我需要显式地将getEntity的结果转换为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;
}

2 个答案:

答案 0 :(得分:5)

应该是

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

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

答案 1 :(得分: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;
    }
}