获取object对象中的属性值
获取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)
·
获取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");
//设置私有属性为public
content.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)
更多推荐
已为社区贡献1条内容
所有评论(0)