【发布时间】:2016-05-04 09:55:13
【问题描述】:
如果我有这样的课:
class MyObject {
public int myInt;
public String myString;
}
是否可以在不实现转换代码的情况下将此类的实例转换为HashMap?
MyObject obj = new MyObject();
obj.myInt = 1; obj.myString = "string";
HashMap<String, Object> hs = convert(obj);
hs.getInt("myInt"); // returns 1
hs.getString("myString"); // returns "string"
Java有提供那种解决方案,还是我需要自己实现convert?
我的班级有 50 多个字段,为每个字段编写转换器并不是一个好主意。
【问题讨论】:
-
Hashmaps 有键和值(2 个东西),而不是 50 个字段。您能澄清一下您要在这里实现的目标吗?
-
您还必须提供自定义的
Map实现,因为从Map获取键值的有效方法是get(Object)方法。没有什么像getInt或getString这样可以从 Map 返回不同的类型。最后,拥有它们没有任何意义,因为返回类型是由第二个泛型类型定义的。 -
@TimBiegeleisen 我想将我的对象的所有字段转换为 hashmap 的键和值。
-
@Mr.D 您能否为此详细说明一个用例,因为我看不到任何用例。调用一个简单的 getter 方法对我来说会更容易,特别是因为更改任何这些字段中的单个值会使以前生成的
Map无效。 -
@KevinEsche 有些库只接受哈希映射
标签: java