Java通过反射,注入参数

举报
西魏陶渊明 发表于 2022/09/25 03:37:36 2022/09/25
【摘要】 BossSettlementAccount bossAccount = new BossSettlementAccount(); bossAccount = AddAccountID.addId(bossAccount, bossAccount.getClass(), "account", ProjectConfig.INTEGER)...
 BossSettlementAccount bossAccount = new BossSettlementAccount();
bossAccount = AddAccountID.addId(bossAccount, bossAccount.getClass(), "account", ProjectConfig.INTEGER);


/**
 * @Package: pterosaur.account.util
 * @Description: 因为数据库唯一id,是由系统创建,所以,统一处理存入id
 * @author: liuxin
 * @date: 17/4/22 上午11:50
 */
public class AddAccountID {
    private static final Logger logger = LoggerFactory.getLogger(AddAccountID.class);
    private static final String INTEGER = "integer";
    private static final String STRING = "string";

    public static <T> T addId(Object target, Class<T> type, String idName, String fieldType) {
        T t = type.cast(target);
        Object uid = caseType(fieldType);
        try {
            Field field = t.getClass().getDeclaredField(idName);
            field.setAccessible(true);
            field.set(t, uid);
        } catch (NoSuchFieldException nfe) {
            logger.error(nfe.getMessage());
        } catch (IllegalAccessException ill) {
            logger.error(ill.getMessage());
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return t;
    }

    /**
     * 根据类型,转换id类型
     *
     * @param fieldType
     * @return
     */
    public static Object caseType(String fieldType) {
        Object uid = null;
        switch (fieldType) {
            case INTEGER:
                uid = Integer.parseInt((UuidUtil.createId()));
                break;
            case STRING:
                uid = UuidUtil.createId();
                break;
        }
        return uid;
    }
    
/**
 * @Package: com.blm.data
 * @Description: 数据转换工具
 * 将map里面的对象转换为制定对象
 * @author: liuxin
 * @date: 17/5/15 下午4:44
 */
    public static <T> T mapToObject(Map<String, Object> map, Class<T> cls) throws Exception {
        Object target=cls.newInstance();
        T t = cls.cast(target);
        Set<String> keySet = map.keySet();
        Iterator<String> keys = keySet.iterator();
        Field[] fields = t.getClass().getDeclaredFields();
        ArrayList<String> fieldNames = new ArrayList<String>();
        for (Field field : fields) {
            String fileName = field.getName();
            fieldNames.add(fileName);
        }
        while (keys.hasNext()) {
            String fieldName = keys.next();
            if (fieldNames.contains(fieldName)) {
                Object value = map.get(fieldName);
                Field field = t.getClass().getDeclaredField(fieldName);
                field.setAccessible(true);
                field.set(t, value);
            }
        }
        return t;
    }
}

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/102425315

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。