反射笔记二
来源:互联网 发布:java分布式开发面试题 编辑:程序博客网 时间:2024/06/09 21:21
通过相应的api 获取成员变量并且修改相应的值
Field 和Field[] 专门用来保存成员变量数组和成员变量
我也不知道这个东西什么时候会用到,但是我觉得一定会有用的。
测试类
public class DemoTwo { int i; public float f; protected boolean b; private String s;}
具体实现:
public class TestMain { public static void main (String[] args){ DemoTwo demoTwo=new DemoTwo(); Class twoClass=demoTwo.getClass(); Field[] declaredFileds=twoClass.getDeclaredFields(); for(int i=0;i<declaredFileds.length;i++){ Field field=declaredFileds[i]; System.out.println("名称为:"+field.getName()); Class fileType=field.getType(); System.out.println("类型为:"+fileType); boolean isTurn=true; while(isTurn){ try{ isTurn=false; System.out.println("修改前的值为:"+field.get(demoTwo)); if(fileType.equals(int.class)){ System.out.println("利用方法setInt()修改成员变量的值"); field.setInt(demoTwo,777); }else if(fileType.equals(float.class)){ System.out.println("利用方法setFloat()修改成员变量"); field.setFloat(demoTwo,2017.01f); }else if(fileType.equals(boolean.class)){ System.out.println("利用方法setBoolean()修改成员变量"); field.setBoolean(demoTwo,true); }else{ System.out.println("利用方法set()修改成员变量"); field.set(demoTwo,"MWQ"); } System.out.println("修改后的值"+field.get(demoTwo)); }catch (Exception e){ System.out.println(e.getMessage()); field.setAccessible(true); isTurn=true; } } System.out.println(); } }}运行结果:
名称为:i
类型为:int
修改前的值为:0
利用方法setInt()修改成员变量的值
修改后的值777
名称为:f
类型为:float
修改前的值为:0.0
利用方法setFloat()修改成员变量
修改后的值2017.01
名称为:b
类型为:boolean
修改前的值为:false
利用方法setBoolean()修改成员变量
修改后的值true
名称为:s
类型为:class java.lang.String
class refelect_demo.TestMain cannot access a member of class refelect_demo.DemoTwo with modifiers "private"
修改前的值为:null
利用方法set()修改成员变量
修改后的值MWQ
getName() 获得成员变量名称
getType() 获得成员变量类型 Class对象
get(Object obj) 获得指定对象obj中成员变量的值,返回为Object类型
set(Object obj,Object value) 将指定的obj中成员变量的值设置为value;
getInt(Object obj) 获得指定对象obj中类型为int的成员变量的值;
setAccessible(boolean flag) 设置这个方法可以直接忽略权限直接访问private等私有权限的成员变量
阅读全文
0 0
- 反射(二) 笔记
- java反射笔记二
- 反射笔记二
- java反射学习笔记二
- 方法的反射---反射学习笔记(二)
- java 之 反射笔记(二)
- Petshop4.0学习笔记二——利用反射编程
- Java Reflection(反射) 入门学习笔记 之二 (Invoke)
- 黑马程序员_java学习笔记二 反射(一)
- 黑马程序员_java学习笔记六 反射二
- JAVA的反射机制学习笔记(二)
- java笔记(二)——反射技术
- Java学习笔记(二)—— 反射
- 反射 笔记
- 反射笔记
- 反射笔记
- 反射笔记
- 反射(二)反射工厂
- Node.js学习(五):认识模板
- Linux开发环境搭建与使用——arm开发板连接终端( xshell )
- NBUT
- HDU2053Switch Game
- 2017 ICPC 区域赛小记
- 反射笔记二
- 动态规划解338. Counting Bits
- linux下创建eclipse快捷方式
- 菜鸟学java----非静态内部类
- OK6410DRAM存储器的初始化
- ACdream
- Visual Page Editor has experimental support for Windows 64-bit
- 利用七牛云解决PC端文件同步
- Java 深入学习(12) —— 装箱与拆箱