从Map <string,object =“”> </string,>的对象中检索特定字段

时间:2014-01-15 05:38:49

标签: java json generics dynamic-cast

我需要别人帮助才能从地图中检索字段。

这是我的代码:

Private List<Job> allJobs;
public void getAllIds(Event e) {

   Map<String, Object> rs=null;

   for(Job j:allJobs) {

       // Contains key as 'data' and value as object (might be any class)
       rs=j.getVariable(id);

       // Here I need get the company id from the object of 'rs'
   }
}

这是我的一个类结构传递给Object

class Server {
      UserContext userContext;
}

class UserContext {
      int companyId;
}

我需要从上面rs获取此公司ID。

如果没有将对象转换为类类型,我怎样才能实现

或者,如果我们知道类名(String),我可以将此对象类型转换为动态类类型吗?

1 个答案:

答案 0 :(得分:0)

是否必须使用Object?您可以添加如下界面:

interface Accessible<T> {
    T getValue();
}    

然后对这些类使用它,这些类可以存储在 rs 中:

class Server implements Accessible<Integer> {
    UserContext userContext;

    @Override
    public Integer getValue() {
        return userContext.getCompanyId();
    }
}

在你的方法中:

private List<Job> allJobs;
public void getAllIds(Event e) {
    Map<String, Accessible<Integer>> rs=null;

    for(Job j:allJobs) {
        rs=j.getVariable(id);
        int myCompanyId = rs.get("my_company").getValue();
    }
}