我需要创建一个实体中包含的字段/值的Hashmap,因此我可以使用它们在包含字段名称的String中替换它们.
我有这个代码:
public static String replaceTags(String message, Map<String, String> tags) ...
Run Code Online (Sandbox Code Playgroud)
它取代中找到的所有标签的消息在等效值标签,但为了建立映射表,我需要采取"任何"实体,并能创建实体的映射.那么,我怎么能做到这一点呢?获取我发送实体的例程,并返回包含所有字段和值的Map.
public static Map<String, String> getMapFromEntity(Object entity){
Map<String, String> map = new HashMap<String, String>();
...?????
return map;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用反射,这是我发现完成这项工作的唯一方法,但还有其他方法可以实现相同的目标吗?我的意思是更有效的方法.
谢谢.
shi*_*t66 11
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));
Run Code Online (Sandbox Code Playgroud)
哦,你的实体应该是你班级的对象,而不是你的班级本身.如果你的字段是私有的并且你有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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19238 次 |
| 最近记录: |