java - Class as Hashtable 键——这是个好主意吗?

标签 java class hashtable

经过一番考虑,我在我的应用程序中实现了缓存,基本上,使用包含 Class 作为键的哈希表(它是对应于特定缓存实体并继承自抽象 的类code>AbstractCache) 以及由该类创建的具体缓存对象,这看起来很方便。

但是将 Class 作为 Hashtable 键是个好主意,还是我应该只使用 .canonicalName() 或类似的东西?

最佳答案

如果您永远不需要卸载类,这可能不是问题。但由于要求可能会根据代码的运行方式(独立 Java 应用程序或部署在 Web 容器、企业服务器等)而有所不同,因此最好不要这样做。类加载器泄漏是非常难以追踪和解决的错误。

使用规范名称似乎是一个更好的解决方案。但是请记住另一个挑战:如果您有多个类加载器可能加载同一个类,这些类仍将被视为不兼容。您将无法通过它们的规范名称来区分它们,而由不同的类加载器加载的两个相同的类将产生两个不同的 Class 实例,并且可以用作同一映射中的键。

如果您没有非常具体的类加载器约束或要求,请使用规范名称。如果您要部署为独立 Java 应用程序以外的任何其他应用程序,请注意其影响。

关于java - Class as Hashtable 键——这是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8209658/

相关文章:

c++ - 如何在不拼接的情况下从其基类指针复制继承类?

JavaMail getText() 方法在 HTML 电子邮件中始终返回 null

java - 任何提高读取文件性能的方法,比缓冲读取器更好

php - 组合多个类会导致 PHP 出现错误?

python - 在 Python 中,派生类可以被截断为基类吗?

java - Java HashMap 调整大小的时间复杂度

data-structures - 线性探测上的二次探测

c# - 静态哈希表应该有多少容量才能最大程度地减少冲突?

java - 调用Action Bar导致错误

java - 为 CRUD 操作自动生成 spring-rest 架构?