java中通过反射强力获取私有变量的值

  我们都知道如果一个变量用private声明,那么他们的变量将只能在自身的类中或类的对象使用,对于其他类是不可见的。现在我将通过反射访问私有变量。

 下面是一个私有变量的bean:

public class PrivateField {
	private String name = "qq";
	private String password = "qqpassword";
}

下面是得到私有变量的值:

package com.evan.exercise;

import java.lang.reflect.Field;

public class GetPrivateField {

	public static void main(String[] args) throws Exception {
		// /通过类的字节码得到该类中声明的所有属性,无论私有或公有
		Field fieldPassword = PrivateField.class.getDeclaredField("password");
		// 设置访问权限(这点对于有过android开发经验的可以说很熟悉)
		fieldPassword.setAccessible(true);

		// 得到私有的变量值
		PrivateField user = new PrivateField();
		Object password = fieldPassword.get(user);
		// 输出私有变量的值
		System.out.println(password.toString());//qqpassword
	}
}


你可能感兴趣的:(java基础回顾)