gpt4 book ai didi

java - 使用 Class 作为 HashMap 的键是否会导致不良影响?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:45 24 4
gpt4 key购买 nike

考虑以下几点:

Map<Class<?>, Object> myMap = new HashMap<Class<?>, 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)?考虑软件具有各种类加载器和序列化机制。还会是同样的结果吗?如果不是...还有什么替代方案?

最佳答案

在我的脑海中,是否有任何理由不使用字符串类名?例如。而是使用:

myMap.put("Foo", fooObject);

如果您怀疑范围内可能有多个 Foo 类,您可以使用完整的规范名称:

myMap.put(Foo.class.getCanonicalName(), fooObject);

关于java - 使用 Class 作为 HashMap 的键是否会导致不良影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54072561/

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