您的位置:首页 > 其它

反射setAccessible()方法

2015-07-23 21:12 351 查看


setAccessible()方法

java代码中,常常将一个类的成员变量置为private

 

在类的外面获取此类的私有成员变量的value时,需要注意:

 

测试类:

Java代码  



public class AccessibleTest {  

  

    private int id;  

    private String name;  

  

    public AccessibleTest() {  

  

    }  

  

    public int getId() {  

        return id;  

    }  

  

    public void setId(int id) {  

        this.id = id;  

    }  

  

    public String getName() {  

        return name;  

    }  

  

    pub
4000
lic void setName(String name) {  

        this.name = name;  

    }  

  

}  

 

Main类:

Java代码  



public class Main {  

  

    public static void main(String[] args) throws Exception {  

        Class clazz = Class.forName("com.test.accessible.AccessibleTest");  

        AccessibleTest at = new AccessibleTest();  

        at.setId(1);  

        at.setName("AT");  

        for (Field f : clazz.getDeclaredFields()) {  

            f.setAccessible(true);//AccessibleTest类中的成员变量为private,故必须进行此操作  

            System.out.println(f.get(at));//获取当前对象中当前Field的value  

        }  

  

    }  

  

}  

如果没有在获取Field之前调用setAccessible(true)方法,异常:

Java代码  



 java.lang.IllegalAccessException:  

Class com.test.accessible.Main   

can not access   

a member of class com.test.accessible.AccessibleTest  

with modifiers "private"  

 

当然在AccessibleTest类的内部(AccessibleTest的内部类除外)

进行如上操作则不需要调用setAccesible()方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: