這是訪問對象的bean屬性而不知道/關心其確切類型的適當方式嗎? (或者是否有內置方法已經這樣做?)當屬性不存在或不可用時,是否存在適當的異常?Java:通過反射訪問對象的bean類型方法
static private Object getBeanPropertyValue(Object bean, String propertyName) {
// access a no-arg method through reflection
// following bean naming conventions
try {
Method m = bean.getClass().getMethod(
"get"
+propertyName.substring(0,1).toUpperCase()
+propertyName.substring(1)
, null);
return m.invoke(bean);
}
catch (SecurityException e) {
// (gulp) -- swallow exception and move on
}
catch (NoSuchMethodException e) {
// (gulp) -- swallow exception and move on
}
catch (IllegalArgumentException e) {
// (gulp) -- swallow exception and move on
}
catch (IllegalAccessException e) {
// (gulp) -- swallow exception and move on
}
catch (InvocationTargetException e) {
// (gulp) -- swallow exception and move on
}
return null; // it would be better to throw an exception, wouldn't it?
}
當然使用的java.beans更有意義比使用反射直接,如果你到達那裏試圖服從豆類標準。對於例外情況,吞嚥是做錯事的明確標誌(在使用反射的情況下,錯誤的事情可能是使用反射)。在這裏,即使是來自teh方法的未經檢查的異常也被吞下。我認爲不言而喻,這裏沒有安全保障。 – 2009-10-01 19:52:51