加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

利用反射给JAVABEAN实例赋值

发布时间:2020-12-14 06:23:23 所属栏目:Java 来源:网络整理
导读:为简化和统一,需要给javabean实例统一赋值,实现代码如下(已测试) span style="color: #0000ff;"import span style="color: #000000;" com.xxx.entity.Call; span style="color: #0000ff;"import span style="color: #000000;" java.lang.reflect.Field;

为简化和统一,需要给javabean实例统一赋值,实现代码如下(已测试)

<span style="color: #0000ff;">import<span style="color: #000000;"> com.xxx.entity.Call;

<span style="color: #0000ff;">import<span style="color: #000000;"> java.lang.reflect.Field;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.lang.reflect.InvocationTargetException;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.lang.reflect.Method;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> ReflectUtils {

@SuppressWarnings(</span>"rawtypes"<span style="color: #000000;"&gt;)
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> Map<String,Class><span style="color: #000000;"&gt; getPoJoFiled(Class cls){
    Map</span><String,Class> names=<span style="color: #0000ff;"&gt;new</span> HashMap<><span style="color: #000000;"&gt;();
    Field[] fileds</span>=<span style="color: #000000;"&gt;cls.getDeclaredFields();
    </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt;(Field filed:fileds){
        names.put(filed.getName(),filed.getType());
    }
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; names;
}

@SuppressWarnings(</span>"rawtypes"<span style="color: #000000;"&gt;)
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> List<String><span style="color: #000000;"&gt; getSetMethodName(Class cls){
    List</span><String> methodNames=<span style="color: #0000ff;"&gt;new</span> ArrayList<><span style="color: #000000;"&gt;();
    Method[] methods </span>=<span style="color: #000000;"&gt;cls.getDeclaredMethods();
    </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt;(Method method:methods){
        </span><span style="color: #0000ff;"&gt;if</span>(method.getName().startsWith("set"<span style="color: #000000;"&gt;)){
            methodNames.add(method.getName());
        }
    }
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; methodNames;
}    private static String getMethodNameByField(List<String> methodNames,String filedName) {
    for (String method : methodNames) {
        if (method.toLowerCase().equalsIgnoreCase("set" + filedName)) {
            return method;
        }
    }
    return "";
}

"unchecked","rawtypes"   initInstance(Object instance,String param) = fieldNames= methodNames=(Entry====(type.equals("java.lang.String" (type.equals("int") || type.equals("java.lang.Integer" Object[] { (type.equals("long") || type.equals("java.lang.Long" Object[] {else if (type.equals("float") || type.equals("java.lang.Float")) {            setMethodName.invoke(instance,new Object[]{new Float(param)});

            }? (type.equals("boolean") || type.equals("java.lang.Boolean")) {

 (type.equals("java.util.Date"=(date!=</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span> main(String[] args) <span style="color: #0000ff;"&gt;throws</span><span style="color: #000000;"&gt; IllegalAccessException,SecurityException {
    String param</span>="20"<span style="color: #000000;"&gt;;
    Call call</span>=<span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Call();
    initInstance(call,param);
    System.out.println(call.toString());
}</span></pre>

?需要用到的公共类:


<span style="color: #0000ff;">public
<span style="color: #0000ff;">class
<span style="color: #000000;"> DateUtil {
<span style="color: #008000;">/**
<span style="color: #008000;">

  • 得到当前的时间,自定义时间格式 y 年 M 月 d 日 H 时 m 分 s 秒
  • <span style="color: #808080;">@param<span style="color: #008000;"> dateFormat 输出显示的时间格式
  • <span style="color: #808080;">@return
    <span style="color: #008000;">*/
    <span style="color: #0000ff;">public <span style="color: #0000ff;">final <span style="color: #0000ff;">static String defaultFormat = "yyyy-MM-dd HH:mm:ss"<span style="color: #000000;">;
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span><span style="color: #000000;"&gt; String getCurrentDate(String dateFormat) {
    SimpleDateFormat sdf </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; SimpleDateFormat(dateFormat);
    </span><span style="color: #0000ff;"&gt;return</span> sdf.format(<span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Date());
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span><span style="color: #000000;"&gt; Date parseDateTime(String date){
    SimpleDateFormat formatter </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; SimpleDateFormat(defaultFormat);
    Date newDate </span>= <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;;
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        newDate </span>=<span style="color: #000000;"&gt; formatter.parse(date);
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (ParseException e) {
        e.printStackTrace();
    }
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; newDate;
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读