gpt4 book ai didi

java反射创建字段/值 HashMap

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:57 27 4
gpt4 key购买 nike

我需要创建包含在实体中的字段/值的 Hashmap,这样我就可以使用它们在包含带有字段名称的标签的字符串中替换它们。

我有这个代码:

public static String replaceTags(String message, Map<String, String> tags) ...

tags 中的等效值替换 message 中找到的所有标签,但为了构建 Map table 我需要采取“任何”实体,并能够从该实体创建 map 。那么,我怎样才能做到这一点呢?获取我发送实体并返回包含所有字段和值的映射的例程。

public static Map<String, String> getMapFromEntity(Object entity){
Map<String, String> map = new HashMap<String, String>();

...?????

return map;
}

我知道我可以使用反射,这是我找到的完成此任务的唯一方法,但是还有其他方法可以完成同样的事情吗?我的意思是更有效的方法。

谢谢。

最佳答案

    Field[] fields = entity.getClass().getFields();
Map<String, String> map = new HashMap<String, String>();
for(Field f : fields)
map.put(f.getName(),(String) f.get(entity));

哦,你的实体应该是你的类的一个对象,而不是你的类本身。如果你的字段是私有(private)的并且你有它们的 getter,你应该使用 getMethods() 并检查方法名称是否以“get”前缀开头。像这样:

    Method[] methods = entity.getClass().getMethods();
Map<String, String> map = new HashMap<String, String>();
for(Method m : methods)
{
if(m.getName().startsWith("get"))
{
String value = (String) m.invoke(entity);
map.put(m.getName().substring(3), value);
}
}

关于java反射创建字段/值 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8306593/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com