4

我有以下类型的集合:

Collection<GenericMessage<Collection<Client>>>;

Collection<GenericMessage<Client>>;

Collection<GenericMessage<SearchResponse<Client>>>;

和一个Collection<Client> filteredClients

我得到一个对象:

Collection<GenericMessage<?>> resObject = (Collection<GenericMessage<?>>) response.getEntity();

我需要从可能是上述集合类型之一的响应对象中过滤,即未出现在过滤客户端中的客户端。

有干净的方法吗?

GenericMessage 看起来像这样:

public class GenericMessage<T> {
   T object;

   public T getObject(){
    return object;
   }
   public void setObject(T object){
    this.object = object;
   }
}

客户端看起来像这样:

public class Client extends Base

SearchResponse 看起来像这样:

public class SearchResponse<T> extends Base{
   List<T> results;

   public List<T> getResults() {
        return results;
   }

    public void setResults(List<T> results) {
        this.results = results;
   }
}
4

2 回答 2

2
 if (!resObject.isEmpty()){
      GenericMessage<?> firstMessage = resObject.iterator().next();
      Object first = firstMessage.getObject();
      if (first instanceof Client){
         // do Client stuff
      }else if (first instanceof SearchResponse){
         // do SearchResponse
      }else if (first instanceof Collection){
         // blah
      }else{
         // error?
      }
 }
于 2013-06-12T13:46:10.980 回答
0

John B 编写的内容或将类类型参数添加到GenericMessage类。

就像是:

GenericMessage(Class<?> type) {
    this.type= type;
}

public Class<?> getType() {
    return type;
}

稍后,您可以过滤此值:

if (getType().equals(Client.class)) {
   ... //do whatevs
} else if ...
于 2013-06-12T13:56:19.517 回答