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;
    }
  • 相关阅读:
    Python—函数基础篇
    C语言 文件操作(四)
    C语言 文件操作(三)
    C语言 文件操作(二)
    C语言 文件操作(一)
    C语言 生日快乐
    Matlab入门(二)
    Matlab入门(一)
    精华篇:数组指针
    汇编刷题:求一到100内的偶数之和(本程序将和按十六进制输出)
  • 原文地址:https://www.cnblogs.com/-mzh/p/mzh.html
Copyright © 2011-2022 走看看