jav利用反射修改类的静态变量

Posted 黎明露珠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jav利用反射修改类的静态变量相关的知识,希望对你有一定的参考价值。

有Student这个类:

public class Student {
    private static String schoolName="";
    
    private static String schoolArea= "";
    
    private static boolean isSetValue= false;
    
    private String name;
    
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
}

 

现在想将类中的所有静态变量改为java中默认赋的初始值,

public static void resetStaticVar()
{

    Field[] fields= Student.class.getDeclaredFields();

    for(Field field:fields)
    {
        if(Modifier.isStatic(field.getModifiers()))
        {
            if(field.getType()==int.class)
            {
                field.set(null,0);
            }
            else if(field.getType()==float.class)
            {
                field.set(null,0.0);
            }
            else if(field.getType()=double.class)
            {
                field.set(null,0.0D);
            }
            else if(field.getType()==boolean.class)
            {
                field.set(null,false);
            }
            else
            {
                Object val= field.getType().newInstance();
                field.set(null,val);
            }
        }
    }

}

或者这里的null也可以换成Student对象的一个实例

 

以上是关于jav利用反射修改类的静态变量的主要内容,如果未能解决你的问题,请参考以下文章

利用Java反射处理private变量#yyds干货盘点#

Java的反射

[小技巧]python利用反射实现函数内静态局部变量

[AS3]在反射中使用静态方法

反射和静态得明确理清楚

java回顾之反射和注解