使用commons BeanUtils从模型类获取数组列表对象



在我的模型类中,我有一个类型为ArrayList的私有字段,当我试图使用BeanUtils获得ArrayList时,它没有说没有这样的方法,有人可以解释为什么会发生这种情况吗?

代码如下:

public class ApplicationListDTO  implements DTO {  
  private Integer count = null;      
  private String next = null;      
  private String previous = null;      
  private List<ApplicationInfoDTO> list = new ArrayList<ApplicationInfoDTO>();
  private long lastUpdatedTime = 0L;
  private long createdTime = 0L;
  /**
  * gets and sets the lastUpdatedTime for ApplicationListDTO
  **/
  @org.codehaus.jackson.annotate.JsonIgnore
  public long getLastUpdatedTime(){
    return lastUpdatedTime;
  }
  public void setLastUpdatedTime(long lastUpdatedTime){
    this.lastUpdatedTime=lastUpdatedTime;
  }
  /**
  * gets and sets the createdTime for a ApplicationListDTO
  **/
  @org.codehaus.jackson.annotate.JsonIgnore
  public long getCreatedTime(){
    return createdTime;
  }
  public void setCreatedTime(long createdTime){
    this.createdTime=createdTime;
  }
  /**
   * Number of applications returned.n
   **/
  @ApiModelProperty(value = "Number of applications returned.n")
  @JsonProperty("count")
  public Integer getCount() {
    return count;
  }
  public void setCount(Integer count) {
    this.count = count;
  }
    /**
   * Link to the next subset of resources qualified.nEmpty if no more resources are to be returned.n
   **/
  @ApiModelProperty(value = "Link to the next subset of resources qualified.nEmpty if no more resources are to be returned.n")
  @JsonProperty("next")
  public String getNext() {
    return next;
  }
  public void setNext(String next) {
    this.next = next;
  }
    /**
   * Link to the previous subset of resources qualified.nEmpty if current subset is the first subset returned.n
   **/
  @ApiModelProperty(value = "Link to the previous subset of resources qualified.nEmpty if current subset is the first subset returned.n")
  @JsonProperty("previous")
  public String getPrevious() {
    return previous;
  }
  public void setPrevious(String previous) {
    this.previous = previous;
  }
    /**
   **/
  @ApiModelProperty(value = "")
  @JsonProperty("list")
  public List<ApplicationInfoDTO> getList() {
    return list;
  }
  public void setList(List<ApplicationInfoDTO> list) {
    this.list = list;
  }
}

,方法调用的代码如下:

Object object = ((ResponseImpl) message.getContent(List.class).get(0)).getEntity();
BeanUtils.getProperty(object,"list");

BeanUtils.getProperty(..)返回String,所以它不是您需要的。

你可以在没有任何库支持的情况下完成:

try {
    Object object = ((ResponseImpl) message.getContent(List.class).get(0)).getEntity();
    Field field   = object.getClass().getDeclaredField("list");
    List<Object> list = field.get(object);
    [...]
} catch (Exception e) {
    e.printStackTrace();
}

或者您可以使用Apache Commons Lang库中的FieldUtils来完成。下面是一个例子:

try {
    Object object = ((ResponseImpl) message.getContent(List.class).get(0)).getEntity();
    Field field   = FieldUtils.getField(object.getClass(), "list", true);
    List<Object> list = field.get(object);
    [...]
} catch (Exception e) {
    e.printStackTrace();
}

相关内容

  • 没有找到相关文章

最新更新