Java反射的机制的一点心得
2013-01-14 10:58
309 查看
今天弄了一下Java的反射机制去修改一个对象中的私有变量,刚开始有点摸头不知脑的,然后百度,发现基本上都是一个模板,气死个人。后来还是零零散散的看了一些。
首先要有一个Class对象
Class<?> cls = MyPojo.class;
然后获取这个对象中的变量:这里有几种方式,开始搞错了,老是抛异常
Field field2=cls.getField("name");
这个方法,只能获取到cls中的public对象,对于私有变量是获取不到的,会抛异常,后来看了下注解:
Returns a
public member field of the class or interface
当然也有变法访问私有变量:
Field field = cls.getDeclaredField("name");
这个就可以访问公有,私有变量皆可。因为他是从错有声明变量中去获取。
然后如果要操作,就必须要有这个方法:
field.setAccessible(true);
将其设置为可以访问:
然后如果要给某个变量赋值:
MyPojo instance=(MyPojo) cls.newInstance();
首先new一个实例出来:
field.setInt(instance, 10);
给这个实例中的field变量(int型)赋值为10
首先要有一个Class对象
Class<?> cls = MyPojo.class;
然后获取这个对象中的变量:这里有几种方式,开始搞错了,老是抛异常
Field field2=cls.getField("name");
这个方法,只能获取到cls中的public对象,对于私有变量是获取不到的,会抛异常,后来看了下注解:
Returns a
Fieldobject that reflects the specified
public member field of the class or interface
当然也有变法访问私有变量:
Field field = cls.getDeclaredField("name");
这个就可以访问公有,私有变量皆可。因为他是从错有声明变量中去获取。
然后如果要操作,就必须要有这个方法:
field.setAccessible(true);
将其设置为可以访问:
然后如果要给某个变量赋值:
MyPojo instance=(MyPojo) cls.newInstance();
首先new一个实例出来:
field.setInt(instance, 10);
给这个实例中的field变量(int型)赋值为10
相关文章推荐
- JAVA的反射机制--学习心得
- 从反射机制中 得到的一点类型转换心得
- java反射一点应用心得
- 学习心得:Java为什么支持反射机制?
- Java学习之反射机制学习笔记--3
- Java中关于enum的一点心得
- < 转>Java 反射机制浅析
- java学习笔记13--反射机制与动态代理
- 如何理解JAVA反射机制
- JAVA的反射机制
- [java]反射机制2
- 【java小白成长记】controller的一点心得
- java中的反射机制(续)
- java 反射机制
- JAVA中的反射机制
- 通过java类的反射机制获取类的属性类型
- Java-反射机制小结
- java---泛型和反射机制
- Java中的类反射机制
- JAVA 反射机制下的类操作