gpt4 book ai didi

Java 映射,键 = 类,值 = 该类的实例

转载 作者:行者123 更新时间:2023-12-03 11:53:54 24 4
gpt4 key购买 nike

我不确定我想做的事情是否可行,但如果可以,我想知道如何做。基本上,我想创建一个 Map,其中键是一个类( java.lang.Class ),该条目的值是该类的一个实例。目前我有

private Map<Class<?>, Object> myMap = new HashMap<Class<?>, Object>();

然而,这意味着任何对象都可以放置在 map 中。如果可以的话,我想做成,所以只有key中的类的一个实例才能放到map中。有什么办法可以使用吗?类的参数化以确保这一点?

另外,我发现可能有一个 possible memory leak在做这样的事情时。我不确定我是否完全理解这是如何发生的。我只会将单例对象粘贴到 map 中,所以还会担心内存泄漏吗?如果是这样,我该如何预防?

最佳答案

Java 的类型系统根本不够强大,无法强制执行您直接描述的类型约束,您需要进行一些不安全的强制转换才能使其正常工作——或者将 Map 包裹起来。在其他一些强制类型安全的 API 中。 Guava's ClassToInstanceMap 正是针对这个用例,提供了一个外部安全的 API,对 Map 施加了额外的限制。界面使其工作。 (披露:我为 Guava 做出了贡献。)

唯一可能导致内存泄漏的情况是,您在此处使用的某些类不会在应用程序的整个生命周期中保留。对于许多用户来说,这不是一个问题,特别是如果您正在编写一个“服务器端”应用程序,而不必担心卸载未使用的类。

关于Java 映射,键 = 类,值 = 该类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194855/

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