通过Java反射机制获取JavaBean对象
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过Java反射机制获取JavaBean对象
目的
1.拼接SQL语句。
2.生成FORM表单。
3.获取JavaBean注解信息。
...
源代码
package com.zc.util;
import ng.reflect.Field;
import ng.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import ment;
/**
* 通过Java反射机制获取JavaBean对象
*
* @author张川(cr10210206@)
* */
public class ReflectBeanUtil {
//不属于JavaBean自身的属性
private static final String NOFIELDNAME = "serialVersionUID";
/**
* 根据JavaBean获取属性名称和属性值
*
* @param obj JavaBean对象
* */
public static Map
Field[] fields = obj.getClass().getDeclaredFields();
for(Field field:fields){
String key = field.getName();
Object value = getFieldValueByName(key, obj);
if(!NOFIELDNAME.equals(key) && isThisType(value) && value != null && !"".equals(value)){
params.put(key, value);
}
}
return params;
}
/**
* 根据属性名称和JavaBean获取属性值
*
* @param fieldName 属性名称
* @param obj JavaBean对象
* */
public static Object getFieldValueByName(String fieldName, Object obj){
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get"+ firstLetter + fieldName.substring(1); Method method = obj.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(obj, new Object[] {});
return value;
} catch (Exception e) {
return null;
}
}
/**
* 判断属性值是否是规定的类型
*
* @param value 属性值
* */
public static boolean isThisType(Object value){
if(value instanceof String){
return true;
}
else if(value instanceof Integer){
return true;
}
else if(value instanceof Date){
return true;
}
else if(value instanceof Boolean){
return true;
}
else if(value instanceof Double){
return true;
}
else if(value instanceof Float){
return true;
}
else if(value instanceof Byte){
return true;
}
else if(value instanceof Short){
return true;
}
else if(value instanceof Long){
return true;
}
return false;
}
/**
* 根据JavaBean获取属性名称和注解属性值
*
* 例如:获取如下属性的中文说明
* @Comment("名称")
* private String name;
*
* @param obj JavaBean对象
* */
public static LinkedHashMap
LinkedHashMap
Field[] fields = obj.getClass().getDeclaredFields();
for(Field field:fields){
String key = field.getName();
String value = "";
if(field.isAnnotationPresent(Comment.class)){
Comment comment = field.getAnnotation(Comment.class);
value = comment.value();