我有以下类型的集合:
Collection<GenericMessage<Collection<Client>>>;
Collection<GenericMessage<Client>>;
Collection<GenericMessage<SearchResponse<Client>>>;
和Collection<Client> filteredClients
。
我得到一个对象:
Collection<GenericMessage<?>> resObject = (Collection<GenericMessage<?>>) response.getEntity();
我需要从响应对象进行过滤,该对象可能是上述集合类型之一,即未出现在filteredClients中的客户端。
有干净的方法吗?
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;
}
}
答案 0 :(得分: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?
}
}
答案 1 :(得分:0)
John B wrote或将类类型参数添加到GenericMessage
类。
类似的东西:
GenericMessage(Class<?> type) {
this.type= type;
}
public Class<?> getType() {
return type;
}
稍后,您可以过滤此值:
if (getType().equals(Client.class)) {
... //do whatevs
} else if ...