私はイントロスペクションを使用してBeanのgetメソッドを取得していますが、結果がArrayかPrimitiveかを判断できるようにしたいと思いますが、その型がArrayListであることがわかっているときでも。同じノートでは、isArray()は、プリミティブArray、ArrayListなどのすべてのタイプの配列に対して機能しますか?Introspectorの値にisPrimitiveまたはisArrayを使用する
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.
}
。それでも、isPrimitive()は、intやStringなどのプリミティブ型であることがわかっているフィールドでは機能しません。 – ryandlf
Erm、 'String'はプリミティブではなくオブジェクトです。 'int'に関しては、それはプリミティブですが、あなたが何をしているのかを見ることなく、何が間違っているのかを指摘できません:)あなたは' Integer'を持っていませんか? –
基本的には、Beanの各ゲッターの値がArrayList、Array、Integerまたはint、Stringなどであるかどうかをテストしようとしています。配列などの型の場合は、さらにコードをループする必要がありますそれ以外の場合は結果を処理します(チェックする必要があります)。値の型を確認する良い方法はありますか? – ryandlf