Java:将类成员变量/值转换为 Map - 反射

标签 java reflection hashmap

我有一个类的实例,我想为其创建一个 Map,其中 Key 作为每个类变量名称,其 Value 作为该类变量中的值?

我尝试使用以下方法,但似乎不起作用。它不会进入 if() 或 else if() 部分。并且 map 仍然是空的。

有人能解决这里的问题吗?谢谢

public class ClassA {
    private String optionOne = "1";
    private Int optionTwo = 2;

}


        Map<String, String> map = new HashMap<>();
        Map<String, Integer> mapInt = new HashMap<>();

        for (Field field : ClassA.class.getFields()) {
            field.setAccessible(true);
            if (field.getType().equals(String.class)){
                map.put(field.getName(), (String) field.get(object));
            } else if (field.getType().equals(Integer.class)) {
                mapInt.put(field.getName(), (Integer) field.get(object));
            }
        }

最佳答案

getFields 更改为 getDeclaredFields,将 Integer.class 更改为 int.class,因为字段 optionTwoint 而不是 Integer

Map<String, String> map = new HashMap<>();
Map<String, Integer> mapInt = new HashMap<>();

for (Field field : ClassA.class.getDeclaredFields()) {
    field.setAccessible(true);
    if (field.getType().equals(String.class)){
        map.put(field.getName(), (String) field.get(object));
    } else if (field.getType().equals(int.class)) {
        mapInt.put(field.getName(), (Integer) field.get(object));
    }
}

关于Java:将类成员变量/值转换为 Map - 反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51414861/

相关文章:

java - 比较两个数组列表以返回最新日期

java - 内置的短方法来获取按 Java 中的值排序的 Hashmap 键数组

java - 使用预准备语句的变量列名

rust - StreamExt .scan()方法上的“expected bound lifetime parameter, found concrete lifetime”

java - Twitter 中的 Get.text()

c# - 如何拦截.Net 中第三方库对非虚拟方法的调用?

Java/Scala 反射 : Get class methods in order and force object init

c# - 是否可以构建基于 EF 元数据的动态查询?

java - 无法单击日期选择器按钮来使用 appium 和 java 更改日期

java - 使用正则表达式进行名称过滤器 - Java