我正在使用內省檢索bean get方法,並且希望能夠確定結果是Array還是Primitive,但我總是得到一個錯誤的響應。即使當我知道該類型是一個ArrayList。在同樣的說明中,isArray()是否適用於所有類型的數組,例如基本Array,ArrayList等?在內部檢查器值上使用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 2012-01-31 04:19:44
Erm,'String'是一個對象,而不是一個基元。至於'int',這是一個原始的,但沒有看到你在做什麼,我不能指出什麼是錯的:)你確定你沒有'整數'? – 2012-01-31 04:22:34
基本上我試圖測試bean中每個getter的值是一個ArrayList,一個Array,一個Integer或int,String等等。如果它是一個類型如數組,我的代碼將需要通過它進一步循環,否則如果不是,我會處理結果(這就是爲什麼我需要檢查)。有沒有更好的方法來驗證值類型? – ryandlf 2012-01-31 04:26:56