【发布时间】:2011-07-09 20:33:03
【问题描述】:
是否有一种常见的反射方法来判断java方法是否返回一组对象,如数组、列表、集合、集合和其他可迭代的子接口? 背后的故事是我需要检查第三方方法的返回类型并说两件事:
- 方法是否返回对象集(在 人的感觉)?
- 如果是 - 组件类型是什么?
例如,如果方法的返回类型是 Vector<A>、A[]、Set<A> 等,我希望我的代码返回 A。
我是反射/泛型的新手,不想重新发明轮子,也不确定我的方法是否正确。这是我到目前为止所做的:
private boolean isMultiple(Class clazz) {
return clazz.isArray() || Iterable.class.isAssignableFrom(clazz);
}
private Class getReturnComponentType(Method m) {
Class clazz = m.getReturnType();
if(!isMultiple(clazz)) return clazz; // Not a collection
// Collection
if(clazz.isArray()) {
// How do I get Array's component type?
// return null;
} else {
// How do I get Iterable component type?
// return null;
}
}
请帮忙。
【问题讨论】:
标签: java arrays generics reflection collections