当前位置 : 主页 > 编程语言 > java >

java反射调用私有变量demo

来源:互联网 收集:自由互联 发布时间:2021-06-28
gistfile1.txt import java.lang.reflect.Field; import java.lang.reflect.Method; public class Person { private String name;//私有属性 public String address; public Person(String name){ this.name=name; } private void setAddress(String addr
gistfile1.txt
import java.lang.reflect.Field;  
import java.lang.reflect.Method;  
  
public class Person {  
    private String name;//私有属性  
    public String address;  
    public Person(String name){  
        this.name=name;  
    }  
    private void setAddress(String address){ //私有方法  
        this.address=address;  
    }  
    public static void main(String[] args) {  
        try{  
            Person person=new Person("zhangsan");  
            Class
 
   cls=Person.class;  
            //获得私有方法  
            Method method=cls.getDeclaredMethod("setAddress", new Class[]{String.class});  
            //设置私有方法可以被访问  
            method.setAccessible(true);  
            //调用私有方法  
            method.invoke(person, new Object[]{"BJUT"});  
            System.out.println(person.address);//输出BJUT  
              
            //访问私有变量  
            Field field=cls.getDeclaredField("name");  
            field.setAccessible(true);  
            System.out.println(field.get(person));//输出zhangsan  
              
        }catch(Exception ex){  
            ex.printStackTrace();  
        }  
          
    }  
}
 
上一篇:mock测试应用
下一篇:ssm____spring-mvc.xml
网友评论