如何检查java.lang.reflect.Method返回类型是否为Collection?
我有一个方法可以得到如下所示的bean属性列表。如何检查方法返回类型是否为集合(如List、Set…)。iInstance(Collection.class)不起作用如何检查java.lang.reflect.Method返回类型是否为Collection?,java,reflection,collections,Java,Reflection,Collections,我有一个方法可以得到如下所示的bean属性列表。如何检查方法返回类型是否为集合(如List、Set…)。iInstance(Collection.class)不起作用 public static List<String> getBeanProperties(String className, boolean withLists) { ArrayList<String> a = new ArrayList(); try { Class c
public static List<String> getBeanProperties(String className, boolean withLists) {
ArrayList<String> a = new ArrayList();
try {
Class c = Class.forName(className);
Method methods[] = c.getMethods();
for (int i = 0; i < methods.length; i++) {
String m = methods[i].getName();
if(m.startsWith("get") && methods[i].getParameterTypes().length == 0) {
if((methods[i].getReturnType().isInstance(Collection.class)) && !withLists) {
// skip lists
} else {
String f = m.substring(3);
char ch = f.charAt(0);
char lower = Character.toLowerCase(ch);
f = lower + f.substring(1);
a.add(f);
}
}
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return a;
}
publicstaticlist getBeanProperties(字符串类名称,booleanWithList){
ArrayList a=新的ArrayList();
试一试{
类别c=类别forName(类别名称);
方法methods[]=c.getMethods();
for(int i=0;i
使用Collection.class.isAssignableFrom(returnType)
Method#getReturnType
返回单个类对象,即与方法声明相对应的类对象。如果该方法被声明为返回一个集合
,您将看到一个集合。如果声明返回Collection
(List',..)的子类,则需要检查Collection`是否可从实际返回类型分配:
Class<?> realClass = methods[i].getReturnType(); // this is a real class / implementation
if (Collection.isAssignableFrom(realClass)) {
// skip collections (sic!)
}
Class realClass=methods[i].getReturnType();//这是一个真正的类/实现
if(Collection.isAssignableFrom(realClass)){
//跳过集合(原文如此!)
}
Nice!。非常感谢。你跑得很快!:)这就是为什么我们付给他一大笔钱。