zoukankan      html  css  js  c++  java
  • 如何通过反射获取静态常量类中的各个值

    public class Global {

    public static final String YES = "1";
    private static final String NO="0";

    public static Object getConst(String field){
    try {
    return Global.class.getField(field).get(null);
    } catch (Exception e) {}
    return null;
    }

    public static Object getPrivateConst(String field){
    try {
    Field f = Global.class.getDeclaredField(field);
    f.setAccessible(true);
    return f.get(null);
    } catch (Exception e) {}
    return null;
    }
    }

    测试

    import static org.junit.Assert.*;
    import org.junit.Test;

    public class GlobalTest {
    @Test
    public void test() {
    System.out.println(Global.getConst("YES"));
    System.out.println(Global.getPrivateConst("NO"));
    }
    }
     

    成功输出YES和NO的值。

    如果不是取得static属性,那么get方法的参数就不能是null,否则会抛出异常。如果是static,那么可以传入任何对象包括null,因为get方法会将该参数忽略。
    其中字段必须是public,若想获取private字段则需要设置可访问setAccessible(true)。
    Global.class.getField(field)返回一个Field对象,它表示Global的class对象所表示的该类中所指定的名字为field的公共成员的字段。
    Object get(Object obj),参数需要传入该字段所在的类的实例即可。返回之前会将其原始值包中为Object对象。

    原文链接:https://blog.csdn.net/qq_24986539/java/article/details/52193674

  • 相关阅读:
    [c language] getopt
    编程经典问题
    一些常用的正则表达式
    [Head First Python]6. summary
    Java多线程
    JVM运行原理
    Struts2---自定义拦截器
    SpringMVC框架初步
    测试基本问题
    自动化测试
  • 原文地址:https://www.cnblogs.com/ketoli/p/13207919.html
Copyright © 2011-2022 走看看