通过反射获取静态常量字段的值

测试代码

  • 测试获取Global类中的YES常量
public class Global {

    public static final String YES = "1";

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

        }
        return null;
    }
} 
  • 用Junit测试
import static org.junit.Assert.*;

import org.junit.Test;

public class GlobalTest {

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

}

成功输出YES的值1

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

猜你喜欢

转载自blog.csdn.net/qq_24986539/article/details/52193674
今日推荐