当前位置: 首页 > 面试题库 >

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

长孙章横
2023-03-14
问题内容

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

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

但是,这意味着任何对象都可以放置在地图中。如果可能的话,我想这样做,因此只能将键中的类的实例放置在地图中。有什么方法可以使用?在类上确保参数化?

另外,我发现这样做可能会导致内存泄漏。我不确定我是否完全理解这种情况。我只会将单例对象粘贴到映射中,因此是否还会担心内存泄漏?如果是这样,我该如何预防?


问题答案:

Java的类型系统根本不够强大,无法强制执行您直接描述的类型约束,因此您需要执行一些不安全的强制转换才能完成此工作-
或将其包装Map在其他一些可以强制实现类型安全的API中。 Guava
ClassToInstanceMap正是针对此用例进行了此操作,提供了外部安全的API,该API对Map接口施加了额外的限制以使其能够正常工作。(公开:我为番石榴做出了贡献。)

唯一会导致内存泄漏的情况是,如果您在此处使用的某些类在应用程序的生命周期内不会保留。对于许多用户而言,这并不是一个问题,尤其是当您编写的“服务器端”应用程序与卸载未使用的类无关时。



 类似资料:
  • 问题内容: 我认为我的问题与此相似:如何实现具有多个键的Map?但有一个重要的区别。在这个问题中(如果我对它的理解是正确的,请告诉我是否正确),这些键应该总是唯一的。我想要一个Map形式: MyMap ,其中的键不一定是唯一的。如果那没有任何意义,我基本上想要一个二维数组,而不是通过坐标对引用元素,而是通过对象对引用它们。 是否有人对可以在其中工作的图书馆或自己实现此想法的好方法有任何想法?就库而

  • 我不知道如何在Java类中处理嵌套的JSON值。为了尽可能简单,我创建了四个Java类,每个类都有“嵌套级别”。然而,我试图在一个Java类中包含所有这些值。我该怎么做? Json: Java类:

  • 我对容器映射有问题。我需要在key中存储我自己的类Person,但我有错误C2784(即,“编译器无法从提供的函数参数中确定模板参数”)。这是《Ivor Horton的开始:Visual C 2010》一书中的一个例子 错误1错误C2784:“布尔标准::运算符 错误 2 错误 C2784: 'bool std::运算符 错误 3 错误 C2784: '布尔 std::运算符 错误4错误C2784

  • 我是Java中Spring框架的新手。并且有一些问题… 我的应用程序使用Spring、Spring seq的安全性、Hibernate框架。 我正在编写一些简单的应用程序。 我有一个页面,可以通过Hibernate将用户添加到db。 用户类: 角色类: 保存在控制器中: 在UserDAO中保存 我在页面上有一个选择块,我可以在其中选择用户角色作为字符串。 所以在保存用户时,我有 所以据我所知,我应

  • 问题内容: 我必须完成一个奇怪的特殊情况。其描述如下: 我必须设计一个地图,其中“ 键 ”始终为 字符串 类型。但是,其中一个键的“ 值 ”可以是 字符串或列表 (取决于特定键可以具有的值数。如果该特定键只有一个值,并且必须如果键包含许多值,则为列表)。如何完成这种情况? 例如:在映射中有2个键,分别是“名称”和“电话号码”。一个人只能有一个名字和多个电话号码。因此,此处的第一个键(即“名称”)的

  • 我有一个API,它以以下格式返回JSON: 我还有一个POJO类,它具有与JSON响应的键对应的字段,因为、和键在我的用例中不相关。 是否可以将JSON响应映射到我的JavaPOJO类,即只映射键内的值? 一种可能的方法是接受String响应,并使用setter方法将其映射到我的POJO。 有更好的办法吗。像这样的