-1

最終的には、コードでこれを実行できる必要があります。

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

ただし、上記のコードでは、の結果を明示的にキャストする必要がありますgetEntityUserこれは、の戻り型が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 に答える