获取object对象中的属性值
先创建一个实体类并向上转型为Object类
假设实体类如下
public class WordDto {private String uuId;private Long id;private Long aid;private String content;}
WordDto dto=new WordDto();dto.setAid(10000002L).setId(12L).setUuId("123456").setContent("资讯内容");//向上转型Object obj=dto;
准备工作已完成,现在先获取obj中的属性:
Field[] declaredFields = obj.getClass().getDeclaredFields();for(Field field:declaredFields){System.out.println(field.getName());}


其中Field这个类主要是用在java反射中 通过反射机制获取类的属性。
获取obj中的所有属性值
Method[] declaredMethods = obj.getClass().getDeclaredMethods();for(Method method:declaredMethods){System.out.println(method.getName());if(method.getName().startsWith("get")){Object o=method.invoke(obj);System.out.println("属性值get方法->"+o);}}
打印如下:

其中Method类位于 java.lang.reflect 包中,主要用于在程序运行状态中,动态地获取方法信息
getDeclaredMethods方法用于获取当前类的所有方法 ,而invoke就是执行这个方法并把结果返回到o中。
获取obj中的单个属性值
Field content = obj.getClass().getDeclaredField("content");//设置私有属性为publiccontent.setAccessible(true);
getDeclaredField用来获取obj类中的单个属性,而 setAccessible 是将私有属性转变为公有属性,如果不这么做会出现以下异常
Exception in thread "main" java.lang.IllegalAccessException: Class com.tjyun.biz.news.controller.house.admin.ArticleController can not access a member of class com.tjyun.biz.news.pojo.dto.news.WordDto with modifiers "private"at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)















