zoukankan      html  css  js  c++  java
  • bean和map互转

    //自定义注解
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
    public @interface FieldName {
    /** * 字段名 */
    String value() default "";
    /**
    * 是否忽略
    */
    boolean Ignore() default false;
    }

    //map转 bean
    public static <T> T map2Bean(Map<String, Object> source, Class<T> instance) {
    try {
    T object = instance.newInstance();
    Field[] fields = object.getClass().getDeclaredFields();
    for (Field field : fields) {
    field.setAccessible(true);
    FieldName fieldName = field.getAnnotation(FieldName.class);
    if (fieldName != null) {
    field.set(object, source.get(fieldName.value()));
    } else {
    field.set(object, source.get(field.getName()));
    }
    }
    return object;
    } catch (InstantiationException | IllegalAccessException e) {
    e.printStackTrace();
    }
    return null;
    }  
    //bean转map
    public static <T> Map bean2Map(T source) throws IllegalAccessException {
    Map<Object, Object> result = new Properties();
    Class<?> sourceClass = source.getClass();
    //拿到所有的字段,不包括继承的字段
    Field[] sourceFiled = sourceClass.getDeclaredFields();
    for (Field field : sourceFiled) {
    field.setAccessible(true);//设置可访问,不然拿不到private
    //配置了注解的话则使用注解名称,作为header字段
    FieldName fieldName = field.getAnnotation(FieldName.class);
    if (fieldName == null) {
    if (field.get(source)!=null)
    result.put(field.getName(), field.get(source));
    } else {
    if (fieldName.Ignore()) continue;
    result.put(fieldName.value(), field.get(source));
    }
    }
    return result;
    }
  • 相关阅读:
    js手写弹框和按钮显示
    Java类加载机制、双亲委派、Java类加载过程
    Java集合:HashMap必知必会
    查看oracle是否锁表
    消息队列Rabbit MQ 学习第一篇
    数据库blob图片文件,多图片打包下载
    HttpDebug下载
    将博客搬至CSDN
    android事件拦截处理机制详解
    回调函数
  • 原文地址:https://www.cnblogs.com/-mzh/p/mzh.html
Copyright © 2011-2022 走看看