Java的反射机制学习1
来源:互联网 发布:矩阵防御 app 编辑:程序博客网 时间:2024/06/08 06:24
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法.
下面以Person类为例子,对反射进行学习
public class Person { private String name; private int age; public Person(){ } public Person(String name){ this.name=name; } public Person(String name,int age){ this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void show(){ System.out.println("peorson show...name="+name); } public void display(String nation){ System.out.println("display... nation="+nation); } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }}
测试类:
public class Main { @Test public void test1() throws Exception { //得到Person类的Class实例 Class<Person> clazz=Person.class; //通过反射的方式 获取一个person对象 Person p=clazz.newInstance(); System.out.println(p); //得到Person的属性name Field f1=clazz.getDeclaredField("name"); //由于name的private修饰,设置成可以访问 f1.setAccessible(true); //修改对象p的name属性为liu f1.set(p,"liu"); System.out.println(p); //获取对象show方法 Method m1=clazz.getMethod("show"); m1.invoke(p); //获取对象dispaly方法,参数为String Method m2=clazz.getMethod("display",String.class); m2.invoke(p,"china"); }}
打印结果:
Person{name=’null’, age=0}
Person{name=’liu’, age=0}
peorson show…name=liu
display… nation=china
0 0
- 深入学习 Java的反射机制1
- Java反射机制的学习(1)
- Java的反射机制学习1
- 学习Java的反射机制
- JAVA反射机制的学习
- JAVA反射机制的学习
- JAVA反射机制的学习
- JAVA反射机制的学习
- JAVA反射机制的学习
- JAVA反射机制的学习
- JAVA反射机制的学习
- JAVA反射机制的学习
- Java反射机制的学习
- Java反射机制的学习
- JAVA反射机制的学习
- Java反射机制的学习
- Java反射机制的学习
- JAVA反射机制的学习
- kmp算法实现字符串匹配
- Android艺术开发探索——第二章:IPC机制(下)
- 快速排序(Python实现)
- Verilog使用有符号数
- 深入浅出Collection Framework
- Java的反射机制学习1
- eHealth测试(翼华科技校园招聘会)_Day001
- 文件操作--文件流
- 正则表达式基础总结
- Mac上mysql Starting MySQL..The server quit without updating PID file
- python(十一)下:Redis安装配置及使用详解
- html高级标签
- 1024,给自己加油
- 交叉编译mtd-utils到sama5d3x