码迷,mamicode.com
首页 > 其他好文 > 详细

如何通过反射获取静态常量类中的各个值

时间:2020-06-29 15:03:40      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:access   junit   csdn   global   out   cep   article   sse   getc   

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

 

如何通过反射获取静态常量类中的各个值

标签:access   junit   csdn   global   out   cep   article   sse   getc   

原文地址:https://www.cnblogs.com/ketoli/p/13207919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!