黑马程序员——反射之Field类 成员变量
2012-09-14 19:05
211 查看
---------------------- android培训 java培训
期待与您交流! ----------------------
---------------------- android培训 java培训
期待与您交流! ----------------------
详细请查看 http://edu.csdn.net/heima
期待与您交流! ----------------------
package j2se_develop; import java.lang.reflect.Field; /** * Field类代表某个类中的一个成员变量 * * * @author wjw * */ public class Field_class { public static void main(String[] args) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException { // method(); method1(); } public static void method() throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{ FieldClass fc=new FieldClass(6567657,43243233,"ball","baskball","jack"); Field f_b=fc.getClass().getField("b");//通过变量名获取对应的Field,但会实例化多个FieldClass类 System.out.println(f_b.get(fc));//因为有许多FieldClass对象,所以要取出对应的值,要确定具体的FieldClass类对象 //下面用getField获取a的值时,因为a被私有化,所以拿不到 // Field f_a=fc.getClass().getField("a");//通过变量名获取对应的Field,但会实例化多个FieldClass类 // System.out.println(f_a.get(fc));//因为有许多FieldClass对象,所以要取出对应的值,要确定具体的FieldClass类对象 Field f_aa=fc.getClass().getDeclaredField("a");//getDeclaredField()方法,获取只要声明过的就能获取,不管私有还是公有 f_aa.setAccessible(true);//设置f_aa获取的私有属性强制可以获取,称为暴力反射 System.out.println(f_aa.get(fc)); } /* * 把字符串参数中所有的b改成a */ public static void method1() throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{ FieldClass fc=new FieldClass(244,3,"ball","baskball","jabck"); //下面是单独过去每一个值 // Field f_str1=fc.getClass().getField("str1"); // Field f_str2=fc.getClass().getField("str2"); // Field f_str3=fc.getClass().getField("str3"); // String str1=(String) f_str1.get(fc); // String str2=(String) f_str2.get(fc); // String str3=(String) f_str3.get(fc); //下面用迭代 Field[]fields=fc.getClass().getFields(); for(Field field:fields){ // if(ff.getType().equals(String.class)){//这种比较方式不是很专业,因为只有一份Class,所以可以直接用== // } if(field.getType()==String.class){ String oldStr=(String)field.get(fc); String newStr=oldStr.replace('b','a'); field.set(fc,newStr);//修改值 } // System.out.println(field.get(fc));//显示各个参数值 } System.out.println(fc.toString()); } } class FieldClass{ private int a;//注意这里,a为私有,要注意 public int b; public String str1; public String str2; public String str3; //两种方式: //一:快捷键 alt+shift+s选择Generate Constructor using Fielids... //二:击右键 Source 选择Generate Constructor using Fielids... //即可生成下面的构造方法, public FieldClass(int a,int b,String str1,String str2,String str3) { super(); this.a = a; this.b = b; this.str1=str1; this.str2=str2; this.str3=str3; } public String toString(){ return this.str1+",,,,,,,"+this.str2+",,,,,,"+this.str3; } }
---------------------- android培训 java培训
期待与您交流! ----------------------
详细请查看 http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员--Java基础加强--16.利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】【个人总结】
- 黑马程序员——【Java反射学习】方法的反射/成员变量的反射/构造函数的反射
- 深入理解 Java 反射:Field (成员变量)
- 深入理解 Java 反射:Field (成员变量)
- JAVA反射(2) - Field成员变量 学习笔记
- Java反射06 : 成员变量Field学习示例
- 深入理解 Java 反射:Field (成员变量)
- 反射(成员变量Field和成员函数Method的反射)
- 黑马程序员_成员变量的反射的综合案例举例
- 黑马程序员——java语言加强部分——反射之成员变量和数组
- 黑马程序员---java基础加强_成员变量的反射
- 使用类的反射机制来访问类的私有成员变量
- 黑马程序员——OC语言学习——Xcode开发初始化、点语法、成员变量作用域、关键字@property和@synthesize
- 黑马程序员——OC基础---核心语法(点语法,成员变量的作用域,@property和@synthesize)
- 黑马程序员—声明类Person,包含2个成员变量:name、age。定义函数sayHello(), * 调用时输出:我叫***,今年***岁了。声明类Chinese继承Person。
- Java(通过反射获取成员变量并使用)
- 反射机制的概述和字节码对象的获取,通过反射获取构造方法并使用;通过反射获取成员变量并使用;通过反射获取私有成员变量并使用;通过反射获取成员方法并使用
- 通过反射,如何操作私有成员变量(取/赋值),如何调用私有方法?
- java中使用反射做一个工具类,来为指定类中的成员变量进行赋值操作,使用与多个类对象的成员变量的赋值。
- 黑马程序员---成员方法的反射(Method类)