java - 有没有办法动态地从不同的类中获取所有静态字段及其值?
问题描述
我需要在应用程序初始化时从不同的类获取静态值,我正在使用@PostConstruct,我不知道如何在不创建每个类的实例的情况下检索所有这些值
解决方案
您可以用户反射(类名甚至可以动态传递):
package com.example;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class Main {
public static void main(String[] args)
throws IllegalArgumentException, IllegalAccessException, ClassNotFoundException {
printStaticFieldsAndValues("com.example.ClassWithStaticFields");
}
private static void printStaticFieldsAndValues(String className)
throws IllegalArgumentException, IllegalAccessException, ClassNotFoundException {
Class clazz = Class.forName(className);
for (Field f : clazz.getDeclaredFields()) {
if (Modifier.isStatic(f.getModifiers())) {
System.out.println("Name: " + f.getName());
System.out.println("Value " + f.get(null));
}
}
}
}
具有静态字段的类:
package com.example;
public class ClassWithStaticFields {
static String stringField = "String Value";
}
输出:
Name: stringField
Value String Value
推荐阅读
- apache-kafka - KSQLDB:选择字段作为数组
- c++ - 为什么这个简单的向量 c++ 程序不能工作?
- python - 处理 BrokenProcessPool 异常
- python - Pandas Groupby 多列的最大值
- angular9 - 我们如何在单击 fullcalendar-angular CustomButton 时添加像 html 这样的下拉列表
- typescript - 类型“keyof T”不满足约束
- python - matplotlib 补丁在实时热图像上消失
- python-3.x - 如何在 Pivotal 云工厂 (PCF) 上访问 Cx_Oracle
- node.js - 使用带有节点js的knex将json文件数据插入mysql
- reactjs - 发布 https://api.jdoodle.com/v1/execute net::ERR_ABORTED 415