首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Introspector值上使用isPrimitive或isArray

在Introspector值上使用isPrimitive或isArray
EN

Stack Overflow用户
提问于 2012-01-31 12:12:24
回答 2查看 574关注 0票数 0

我使用内省来检索bean的get方法,我希望能够确定结果是Array还是Primitive,但我总是得到错误的响应。即使我知道该类型是一个ArrayList。同样,isArray()是否适用于所有类型的数组,如基元数组、ArrayList等?

代码语言:javascript
复制
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.
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-31 18:40:26

当您调用该方法时,原始返回值将被装箱到其包装器类中。

代码语言:javascript
复制
getter.invoke(bean1).getClass().isPrimitive()

由于您是在包装的返回值上调用getClass,因此isPrimitve将返回false。您可以通过调用getter.getReturnType()来检索实际的返回类型。

票数 1
EN

Stack Overflow用户

发布于 2012-01-31 12:18:15

集合(ArrayList等)不是数组。它们是属于Collections的对象。

只有数组才是数组;

代码语言:javascript
复制
int[] foo = new int[5];
Object[] bar = new Object[4];

这些是数组。- http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9074265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档