最终,我需要能够在我的代码中执行此操作:
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;
}
答案 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;
}
}