是否有一种常见的反射方法来查明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;
}
}
请帮忙。
别忘了地图。 – jtahlborn 2011-03-06 17:40:33