获得静态类中的全局静态常量

静态属性 

import java.lang.reflect.Field;

public class Global {

    public static final String YES = "这里是YES";
    private static final String NO = "这里是NO";

    //静态方法,获取常量
    public static Object getConst(String field) {
        try {
            //getField仅能获取类(及其父类可以自己测试) public属性成员
            return Global.class.getField(field).get(null);//不是静态字段不能传null
        } catch (Exception e) {
        }
        return null;
    }

    //静态方法,获取私有常量
    public static Object getPrivateConst(String field) {
        try {
            //getDeclaredField 仅能获取类本身的属性成员(包括私有、共有、保护)
            Field f = Global.class.getDeclaredField(field);
            //setAccessible值为true 则指示反射的对象在使用时应该取消 Java 语言访问检查。
            //setAccessible值为 false 则指示反射的对象应该实施 Java 语言访问检查
            //由于JDK的安全检查耗时较多.所以通过setAccessible(true)的方式关闭安全检查就可以达到提升反射速度的目的 
            f.setAccessible(true);
            
            return f.get(null);//不是静态字段不能传null
        } catch (Exception e) {
        }
        return null;
    }
} 

 测试方法

import org.junit.Test;

public class GlobalTest {
 
    @Test
    public void test() {
        System.out.println("输出:");
        System.out.println(Global.getConst("YES"));
        System.out.println(Global.getPrivateConst("NO"));
    }
}
输出:
这里是YES
这里是NO

 

你可能感兴趣的:(学习记录)