您的位置:首页 > 编程语言 > Java开发

Java笔记——利用反射机制获取成员变量及成员方法

2015-01-09 14:19 801 查看
package tmp;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {

public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, InvocationTargetException{
Student x=new Student();
Class<?> xC=x.getClass();
System.out.println("x类的名字:"+xC.getName()+";  路径:"+xC.getPackage()+";  父类:"+xC.getSuperclass());
Field id=xC.getDeclaredField("id");
id.setAccessible(true);
id.setInt(x, 100);
System.out.println("利用反射机制,改变私有域成员变量值,赋id值为:"+x.get_id());
Method set_id=xC.getDeclaredMethod("set_id",int.class);
set_id.invoke(x, 10);
System.out.println("利用反射机制,获取成员方法,赋id的值为:"+x.get_id());
}

}

class Student extends Student0{
private int id;
public Student(){
}
public int get_id(){
return id;
}
public void set_id(int id){
this.id=id;
}
public void set_id(float id){
this.id=(int)id;
}
}

class Student0{
private int id;
public Student0(){
}
public int get_id(){
return id;
}
public void set_id(float id){
this.id=(int)id;
}
}
程序运行结果:x类的名字:tmp.Student; 路径:package tmp; 父类:class tmp.Student0利用反射机制,改变私有域成员变量值,赋id值为:100利用反射机制,获取成员方法,赋id的值为:10知识点:1、如何改变类中私有域变量值:
Class<?> xC=x.getClass();
Field id=xC.getDeclaredField("id");
id.setAccessible(true);
id.setInt(x, 100);
2、如何利用java反射机制调研类的方法:
<pre name="code" class="java">Class<?> xC=x.getClass();
<pre name="code" class="java">Method set_id=xC.getDeclaredMethod("set_id",int.class);set_id.invoke(x, 10);

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐