反射获取类的所有属性并赋值

有时类的属性过多,我们又需要给传过来的字段做统一处理的时候,我们可以通过

Field[] fields = pkMatchSkinConfig.getClass().getDeclaredFields();

获得类的所有属性,然后通过

fields[i].setAccessible(true);

方法获得私有属性的权限,然后就可以通过

fields[i].get(pkMatchSkinConfig) 

获得类属性的值,或者通过

fields[i].set(pkMatchSkinConfig,"");

对属性的值进行赋值,但是要注意赋值的类必须相同。 例如 fields[i]String 类就要为它赋值相应的字符串。如下代码所示:

public AdminResponse save(@RequestBody PkMatchSkinConfig pkMatchSkinConfig) throws Exception {
        log.info("===吃鸡赛皮肤配置===:保存吃鸡赛皮肤配置");
        Field[] fields = pkMatchSkinConfig.getClass().getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            String fieldName = fields[i].getName();
            if (fieldName.contains("log")) {
                continue;
            }
            if (fieldName.contains("Switch")) {
                continue;
            }

            fields[i].setAccessible(true);
            if (fields[i].get(pkMatchSkinConfig) == null) {
                fields[i].set(pkMatchSkinConfig,"");
            }
        }
        List pkMatchSkinConfigEntities = convert2SkinConfigEntities(pkMatchSkinConfig);
        log.info("===吃鸡赛皮肤配置===:保存吃鸡赛皮肤配置");
        return pkMatchSkinConfigService.save(pkMatchSkinConfigEntities);

注:属性真是太特么多了,逼得人学习反射

你可能感兴趣的:(JAVA)