for wangwang

模型

/*** @Author: feifei* @Date: 2023/03/07/10:53 上午* @Description:*/
@Data
@ToString
public class TestReflectModel {@TestReflect(fieldName = "myname")private String name;private String adress;
}

注解

/*** @Author: feifei* @Date: 2023/03/07/10:53 上午* @Description:*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
public @interface TestReflect {String fieldName() default  "";
}

方法和测试

/*** @Author: feifei* @Date: 2023/03/07/10:56 上午* @Description:*/
public class TestReflectMain {public static void main(String[] args) throws InstantiationException, IllegalAccessException {Map<String, String> map = new HashMap<>();map.put("myname","旺旺");map.put("adress","安阳");TestReflectModel testReflectModel = convertToModel(map);System.out.println(testReflectModel);}private static  TestReflectModel  convertToModel(Map<String,String> map) throws IllegalAccessException, InstantiationException {Class<TestReflectModel> clazz = TestReflectModel.class;TestReflectModel model = clazz.newInstance();Field[] fields = clazz.getDeclaredFields();for (Field field : fields) {// 获取对象的成员的注解信息TestReflect validator = field.getAnnotation(TestReflect.class);if (!field.isAccessible()) {field.setAccessible(true);}if (validator == null) {field.set(model,map.get(field.getName()));continue;}String name = validator.fieldName();if(StringUtils.isNotBlank(name)){field.set(model,map.get(name));}}return model;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部