java利用反射获取类属性名,获取JavaBean属性名

来源:互联网 发布:iphone 长曝光软件 编辑:程序博客网 时间:2024/05/17 20:08
/** * 获取类属性名 *  * @param pclass * @return String[] * @throws FrameException */public static String[] getClassDeclaredFieldNames(Class<?> pclass) throws FrameException {Field[] propertyField;String[] returnArray;int count = 0;if (pclass == null) {return null;}propertyField = pclass.getDeclaredFields();if (propertyField != null && propertyField.length > 0) {count = propertyField.length;}returnArray = new String[count];for (int i = 0; i < count; i++) {returnArray[i] = propertyField[i].getName();}return returnArray;}/** * 获取JavaBean属性名 *  * @param pclass * @return String[] * @throws FrameException */public static ObjectFieldDescriptor[] getObjectFieldDescriptors(Object obj) throws FrameException {Field[] fields;Field field;int count = 0;ObjectFieldDescriptor[] objectFieldDescriptors;String name;Object value;if (obj == null) {return null;}fields = obj.getClass().getDeclaredFields();if (fields != null && fields.length > 0) {count = fields.length;}objectFieldDescriptors = new ObjectFieldDescriptor[count];for (int i = 0; i < count; i++) {field = fields[i];name = field.getName();value = getFieldValueIgnoreAccessible(obj, field);objectFieldDescriptors[i] = new ObjectFieldDescriptor(name, field.getType(), value);}return objectFieldDescriptors;}
/** * 获取对象的域值,忽略访问权限 *  * @throws FrameException */public static Object getFieldValueIgnoreAccessible(Object obj, Field field) throws FrameException {boolean accessible;Object value;if (obj == null) {throw new FrameException("传入参数[obj]为空!");}if (field == null) {throw new FrameException("传入参数[field]为空!");}try {accessible = field.isAccessible();if (!accessible) {field.setAccessible(true);}value = field.get(obj);field.setAccessible(accessible);return value;} catch (IllegalArgumentException e) {throw new FrameException(e);} catch (IllegalAccessException e) {throw new FrameException(e);}}


原创粉丝点击