为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法动态地从不同的类中获取所有静态字段及其值?

有没有办法动态地从不同的类中获取所有静态字段及其值?

温温酱 2023-03-31 14:45:37
我需要在应用程序初始化时从不同的类获取静态值,我正在使用 @PostConstruct 并且我不知道如何在不创建每个类的实例的情况下检索所有这些值
查看完整描述

2 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

你可以用户反射(甚至可以动态传递类名):


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


查看完整回答
反对 回复 2023-03-31
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

在类上尝试静态初始化程序


public class OtherClass {


   public static final String VALUE = "SomeValue";


}


public class SomeClass {


   static {

      OtherClass.VALUE;

   }

}

做任何你想做的事。


查看完整回答
反对 回复 2023-03-31
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信