通过Java反射机制获取JavaBean对象

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 getFieldByObj(Object obj){ Map params = new HashMap();

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 getFieldCommentByObj(Object obj){

LinkedHashMap params = new 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();

相关文档
最新文档