如何通过反射获取静态常量类中的各个值
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具