JavaSE8基础 Class 获取与设置静态私有字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE8基础 Class 获取与设置静态私有字段相关的知识,希望对你有一定的参考价值。

礼悟:
           好好学习多思考,尊师重道存感恩。叶见寻根三返一,活水清源藏于零。
           虚怀若谷良心主,皓月当空自在王。愿给最苦行无悔,诚劝且行且珍惜。


 

 

    os :windows7 x64
    jdk:jdk-8u131-windows-x64
    ide:Eclipse Oxygen Release (4.7.0)



被解析类的代码:

package blog.jizuiku2;

/**
 * 
 * 
 * @author jizuiku
 * @version V17.10.02
 */
public class Person {
	// 成员变量
	public    int age;
	private   String password;
	protected String name;
			  int score;
	
	public    static   int ageStatic=13;
    private   static String passwordStatic="hello world";
	protected static String nameStatic;
			  static int scoreStatic;
			  
	// 构造方法
	
	public    Person(int age) {System.out.println("public GZ:int");}
	public    Person(int age,int score) {System.out.println("public GZ:int,int");}
	private   Person() {System.out.println("private GZ:");}
	protected Person(String name) {System.out.println("protected GZ:String");}
			  Person(int age,String name){this.age=age;this.name=name;System.out.println("default GZ:int,String");}
	
	// 成员方法
			  
	public void sayHello(String name) {}
	private int sayHello() {return 1;}
	protected String sayHello(int age) {return "";}
			  void	sayHello(int age,String name) {}
	
			  
	public void sayHelloStatic(String name) {}
	private int sayHelloStatic() {return 1;}
	protected String sayHelloStatic(int age) {return "";}
			  void	sayHelloStatic(int age,String name) {}
	
	@Override
	public String toString() {
			return "Person [age=" + age + ", password=" + password + ", name=" + name + ", score=" + score + "]";
	}
	
	
}

 
演示类:

package blog.jizuiku2;

import java.lang.reflect.Field;

/**
 * Class 
 * 
 * @author jizuiku
 * @version V17.10.02
 */
public class ClassGetStaticFieldsDemo {
	public static void main(String[] args) throws Exception {
		
		String className = "blog.jizuiku2.Person";
		Class c = Class.forName(className);
		
		// 得到私有的静态字段 ageStatic
		Field f = c.getDeclaredField("passwordStatic");
		f.setAccessible(true);
		// 输出私有的静态字段的值
		System.out.println(f.get(c));
		// 改变私有的静态字段的值
		f.set(c, "nihao");
		System.out.println(f.get(c));
	}
}

 
结果:
技术分享

 

 


Java优秀,值得学习。
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。












以上是关于JavaSE8基础 Class 获取与设置静态私有字段的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE8基础 Class 获取一个类的Class对象的三种方法

JavaSE8基础 Class getConstructors 获取一个类的public级别构造方法

JavaSE8基础 Class getDeclaredFields 获取一个类中所有的成员变量

JavaSE8基础 Class getDeclaredMethods 获取类的所有方法(不包括父类的)

JavaSE8基础 父子类中都有静态代码块与构造代码块,执行顺序的简单示例

JavaSE8基础 内部类可以访问外部类的私有成员