使用反射获取父类的属性并设值,适用于类中没有提供setter方法
来源:互联网 发布:ipad淘宝hd旧版本下载 编辑:程序博客网 时间:2024/05/08 02:29
package com.demo.zhengweiTest;/** * Created by zhengwei.wzw on 2015/7/22. */public class Animal { protected String type;}package com.demo.zhengweiTest;/** * Created by zhengwei.wzw on 2015/7/22. */public class People extends Animal{ protected String name;}package com.demo.zhengweiTest;/** * Created by zhengwei.wzw on 2015/7/22. */public class Student extends People { protected int score; public String toString(){ String toString="type:"+type+" name:"+name+" score:"+score; System.out.println(toString); return toString; }}package com.demo.zhengweiTest;import java.lang.reflect.Field;/** * Created by zhengwei.wzw on 2015/7/22. */public class Test { public static void main(String args[])throws Exception{ Class clazz=Class.forName("com.demo.zhengweiTest.Student"); Student stu=(Student)clazz.newInstance(); Field typeField=null,nameField=null,scoreField=null; for(;clazz != Object.class;clazz= clazz.getSuperclass()){ System.out.println(clazz+" begin"); try{ typeField = clazz.getDeclaredField("type"); if(typeField!=null) System.out.println(typeField.getName()); }catch(Exception e){} try { nameField = clazz.getDeclaredField("name"); if(nameField!=null) System.out.println(nameField.getName()); } catch (Exception e) {} try { scoreField = clazz.getDeclaredField("score"); if(scoreField!=null) System.out.println(scoreField.getName()); } catch (Exception e) {} System.out.println(clazz+" end"); } if(typeField!=null){ typeField.setAccessible(true); typeField.set(stu,"人类"); } if(nameField!=null){ nameField.setAccessible(true); nameField.set(stu,"xiao li"); } if(scoreField!=null){ scoreField.setAccessible(true); scoreField.setInt(stu, 88); } stu.toString(); }}输出:class com.demo.zhengweiTest.Student beginscoreclass com.demo.zhengweiTest.Student endclass com.demo.zhengweiTest.People beginnameclass com.demo.zhengweiTest.People endclass com.demo.zhengweiTest.Animal begintypeclass com.demo.zhengweiTest.Animal endtype:人类 name:xiao li score:88Process finished with exit code 0
0 0
- 使用反射获取父类的属性并设值,适用于类中没有提供setter方法
- 通过PropertyDescriptor反射获取属性的 getter/setter 方法
- Java反射获取对象属性并设值
- Java 使用反射获取类、方法、属性上的注释
- java内省(同反射)获取属性的getter\setter方法等
- Setter类的属性
- Java反射获取类的属性值和方法
- Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
- java中使用反射机制获取实体类集合的某个属性值
- Java反射获取类的属性值
- [ios]objective-c 反射获取类的属性的方法
- 反射第四步 : 通过反射获取某一个类的 方法 并通过反射调用
- java中通过反射获取成员方法并使用
- 通过反射获取类的所有属性和方法
- Java反射机制获取/调用类的属性和方法
- 反射获取类属性和方法的调用
- JAVA反射获取属性注解,类方法
- java反射机制,获取类,属性,方法
- jquery.validate扩展
- hihoCoder - 1037 - 数字三角形
- struts2文件和图片上传-最完整的
- 在线教育,如何选择一个合适的视频云平台
- Day03笔记
- 使用反射获取父类的属性并设值,适用于类中没有提供setter方法
- Linux C语言程序设计(八)——树的基本概念介绍
- 如何设置mysql远程访问及防火墙设置
- Jeecms项目中常量
- Java线程中sleep和wait的区别详细介绍
- 手机QQ聊天记录备份
- 概述
- 插入排序
- synchronized详解