@Override public <T> T getProperty(E bean, String name, Class<T> clazz) { String methodName = (!clazz.equals(Boolean.class)) ? JavaBeanNamingUtils.getGetMethod(name) : JavaBeanNamingUtils.getIsMethod(name); Method method = getMethods.get(methodName); if (method != null) try { return clazz.cast(method.invoke(bean)); } catch (IllegalArgumentException e) { throw new JavaBeanOperateException( JavaBeanOperateException.JAVA_BEAN_GETTER_HAS_PARAMETERS + name, e); } catch (IllegalAccessException e) { throw new JavaBeanOperateException( JavaBeanOperateException.JAVA_BEAN_METHODS_NOT_PUBLIC + name, e); } catch (InvocationTargetException e) { throw new JavaBeanOperateException(e); } catch (ClassCastException ex) { throw new JavaBeanOperateException( "The return value of the java bean is not the class : " + clazz, ex); } else throw new JavaBeanOperateException(JavaBeanOperateException.JAVA_BEAN_NO_SUCH_GETTER + name); }