我使用内省来检索bean的get方法,我希望能够确定结果是Array还是Primitive,但我总是得到错误的响应。即使我知道该类型是一个ArrayList。同样,isArray()是否适用于所有类型的数组,如基元数组、ArrayList等?
Class<?> className = bean1.getClass();
ArrayList<ComparatorValue> updateIndexes = new ArrayList<ComparatorValue>();
BeanInfo beanInfo = Introspector.getBeanInfo(className);
PropertyDescriptor classProperties[] = beanInfo.getPropertyDescriptors();
for(int i=0; i<classProperties.length; i++) {
Method getter = classProperties[i].getReadMethod();
System.out.println(getter.invoke(bean1).getClass().isArray()); //Always false.
System.out.println(getter.invoke(bean1).getClass().isPrimitive()); //Always false.
}发布于 2012-01-31 18:40:26
当您调用该方法时,原始返回值将被装箱到其包装器类中。
getter.invoke(bean1).getClass().isPrimitive()由于您是在包装的返回值上调用getClass,因此isPrimitve将返回false。您可以通过调用getter.getReturnType()来检索实际的返回类型。
发布于 2012-01-31 12:18:15
集合(ArrayList等)不是数组。它们是属于Collections的对象。
只有数组才是数组;
int[] foo = new int[5];
Object[] bar = new Object[4];这些是数组。- http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
https://stackoverflow.com/questions/9074265
复制相似问题