当前位置: 首页 > 知识库问答 >
问题:

涉及泛型的类型安全异构容器

马新觉
2023-03-14

我需要创建一个容器,为我存储泛型类型的元素提供一种方式,有点像这个有效的Java模式,但是存储泛型的东西

有没有可能创建一个类型安全异构容器,其中涉及到泛型类型的东西?

<T> void put(T ele, SomeTypedThing<T> genEle);
<T> SomeTypedThing<T> get(T ele);

我可以将添加为方法参数。示例:

public static class Container {

    Map<Class<?>, Set<?>> store = new HashMap<>();

    public <T> void put(Set<T> ele, Class<T> type) {
        store.put(type, ele);
    }

    public <T> Set<T> get(Class<T> type) {
        return store.get(type);
    }
}

有可能做到这一点吗?

Set<?> raw = store.get(type);
Set<T> typed = // some magic;

怎么做,或者为什么不做?它是Java不做的事情还是基本的事情(所以没有语言可以做,或者只是做没有意义)

共有2个答案

罗凯
2023-03-14
热门标签
廖鸿达
2023-03-14
相关问题
 类似资料:
  • 问题内容: 我有一个(对我而言)复杂的Java泛型问题。我通读了一些文档,并了解了一些,但不是全部。基本上,对我来说,尝试解决它会导致尝试和错误。 在下文中,我给出了代码的精简示例,一次没有任何泛型(这样一个人就可以希望理解我想要实现的目标),而另一个则有一些更接近解决方案的补充。请更正我的第二个版本和/或指向特定的文档。(我有Java泛型的常规文档。但是我的代码似乎遇到了一些干扰性的挑战,因此很

  • 我定义jackoson序列化器并将其添加到java类中,如下所示: 编译器出现以下错误: 注释的定义为: 如果我从ReportFilterDeserializer中删除泛型attibute,它将通过编译。我不明白编辑为什么抱怨。

  • 我有一个通用类。它看起来像这样: 显然,conevertdatajsonstring方法仅在字符串类型为T时调用。但有一个警告: 类型安全:未选中从字符串转换为T 有没有一种方法可以在不使用SuppressWarnings的情况下解决此问题: @抑制警告(“未选中”) 方法之前?

  • 问题内容: 我有一些数据存储在Java元素中,我需要以给定的格式JSONObject返回它。虽然我的实现工作正常,但是我仍然从eclipse收到警告消息(版本:Juno Service Release 2): “ 类型安全性:put(Object,Object)方法属于原始类型HashMap。对通用类型HashMap的引用应参数化 ” 这是我的代码: 有问题的行是: 除了添加之外,还有其他方法可以

  • 问题内容: 我有课 和班级 关键是该方法不安全,因为我可以提供的项目与当前报告无关,但与其他报告相关,编译器不会抱怨。 是否可以用类型安全的方式编写该方法,即我们可以仅将T作为当前报表的类型作为参数传递。 问题答案: 我认为您正在寻找以下内容。 它的工作方式是: 您想用从 您要确保所有列表都属于同一类型 为了将参数绑定到从扩展的对象,您需要对自身进行参数化: 您添加需要从报表扩展的绑定 但是您要

  • 我想使用MongoDB用NestJs和TypeORM创建一个应用程序。假设我有一个实体,除了ID字段外,还有两个唯一的字段 当我想用已经存在的或创建一个新模块时,我得到了以下异常错误 因此,在catch语句中,我必须处理传入的错误。我要做的是 TypeORM是否公开预制异常?是否有我可以使用的枚举?获取这些TypeORM数据库错误的好方法是什么? 这里似乎列出了一些错误 https://githu