如何从 ClassName.class 获取静态最终 属性?

How to get static final property from ClassName.class?

我有一组 class 这样的。

private static final Class<?>[] CLASSES = new Class[]{
    First.class,
    Second.class,
};

每个class有属性

    public static final String PROPERTY = "property_name";

需要循环比较 PROPERTY 与特定字符串,如下所示:

for (Class<?> item : CLASSES) {
    string.equals(item.PROPERTY)
}

但我找不到从“.class”转义得到item.PROPERTY.

的方法

在这种情况下如何以正确的方式获得PEOPERY

谢谢!

你应该使用:

    for (Class<?> item : CLASSES) {
        Field f = item.getDeclaredField("PROPERTY");
        string.equals(f.get(item));
    }

你的意思是如何处理异常?

enter code here
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
    Class<?>[] classes = new Class[] { ClassA.class, ClassB.class, };

    for (Class<?> item : classes) {
        Field f = item.getDeclaredField("PROPERTY");
        System.out.println(f.get(item));
    }
}
enter code here
public static void main(String[] args) {
    Class<?>[] classes = new Class[] { ClassA.class, ClassB.class, };

    for (Class<?> item : classes) {
        try {
            Field f = item.getDeclaredField("PROPERTY");
            System.out.println(f.get(item));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}