gpt4 book ai didi

Java:如何初始化类型化对象列表?

转载 作者:行者123 更新时间:2023-11-29 06:44:37 25 4
gpt4 key购买 nike

所以我一直在寻找这个问题的答案,但我不确定它是如何工作的。

我正在尝试列出 BloomFilter<String>对象。

BloomFilter 的类定义是:

public class BloomFilter<E> implements Serializable { ...

<E>允许用户选择要进入过滤器的元素类型。就我而言,我需要字符串。

在程序的其他地方,我需要 4 BloomFilter<String>对象。

我的问题是:如何初始化以下行?

private static BloomFilter<String> threadedEncrpytionFilters[] = null;
threadedEncryptionFilters = ???

这似乎类似于创建一个 ArrayLists 列表?这也可以吗?

最佳答案

在看到有人已经回答了这个问题后,我想删除这个答案,但我从评论中看到人们仍然很困惑,所以就这样吧:)

规范明确指出,你想做的是非法的。含义:

BloomFilter<String> threadedEncrpytionFilters[] = new BloomFilter<String>[4];

不会编译。您不能创建具体泛型类的数组。对于泛型,您只能存储在数组中:

  • 原始类型
  • 无限通配符参数类型

如前所述,您的问题的解决方法是将数组更改为 List<BloomFiler<String>> .

如果考虑到 Java 在不同阶段(编译、运行时等)处理泛型类型的方式,这种行为实际上是合乎逻辑的。了解之后,您会发现具体泛型类型的数组不是类型安全的。这里有一本关于这个主题的好书:http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html#FAQ104

关于Java:如何初始化类型化对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7210373/

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