作者:麦兜199294_835 | 来源:互联网 | 2022-11-22 14:22
考虑以下:
Map, Object> myMap = new HashMap, Object>();
Foo fooObject = New Foo();
myMap.put(fooObject.getClass(), fooObject)
请注意,java.lang.Class本身并不实现hashCode()方法,而是隐式地从java.lang.Object继承它.我在JDK 1.8中验证了这一点.
可以java.lang.Class
安全地用作钥匙java.util.HashMap
吗?将myMap.get(Foo.class)
始终返回,我把喜欢的价值观myMap.put(fooObject.getClass(), fooObject)
?考虑该软件具有各种类加载器和序列化机制.它仍然会是相同的结果吗?如果不是......会有什么选择?
1> Tim Biegelei..:
在我的头顶,是否有任何理由不使用字符串类名?例如,改为使用:
myMap.put("Foo", fooObject);
如果你是偏执狂,也许Foo
在范围内可能有多个类,你可以使用完整的规范名称:
myMap.put(Foo.class.getCanonicalName(), fooObject);