Java 集的一般供应商集

Java 集的一般供应商集,java,generics,Java,Generics,我正在尝试创建一套成套设备供应商。内部集合可以是任何类型(字符串、数字等)。我希望能够将供应商添加到此集合,并检索它们。当我检索到它们时,我知道我不知道供应商返回的是哪种类型的集合,并且我同意它是供应商。我如何申报这一套 我试过了 一, Set 这是可行的,但我不会对内部集合进行泛型化,这似乎是错误的 二, Set 但是我不能添加供应商 三, Set声明为Set是任何供应商的超类型,Supplier>是任何Set供应商的超类型。而Supplier声明为Set是任何供应商的超类型,Suppli

我正在尝试创建一套成套设备供应商。内部集合可以是任何类型(字符串、数字等)。我希望能够将供应商添加到此集合,并检索它们。当我检索到它们时,我知道我不知道供应商返回的是哪种类型的集合,并且我同意它是
供应商
。我如何申报这一套

我试过了

一,

Set
这是可行的,但我不会对内部集合进行泛型化,这似乎是错误的

二,

Set
但是我不能添加供应商

三,


Set声明为
Set
是任何供应商的超类型,
Supplier>
是任何Set供应商的超类型。而
Supplier声明为
Set
是任何供应商的超类型,
Supplier>
是任何Set供应商的超类型。当
supplier时,您是否尝试过使创建方法通用
Set createSupplierSets()
@daniu我没有这样的方法,因为我必须从不同的地方添加一些集合。因此,它必须使用.add()。唯一的问题是编译时警告。泛型使用“擦除”技术,这意味着所有泛型都被删除并替换为合适的泛型类型-通常是
对象
。泛型没有运行时表示。你能接受这些警告吗?你试过让创建方法通用吗
Set createSupplierSets()
@daniu我没有这样的方法,因为我必须从不同的地方添加一些集合。因此,它必须使用.add()。唯一的问题是编译时警告。泛型使用“擦除”技术,这意味着所有泛型都被删除并替换为合适的泛型类型-通常是
对象
。泛型没有运行时表示。你能接受这些警告吗?很有趣。介意更详细地介绍一下它到底是如何工作的吗?@Sherz更有趣的是,我不知道……试过之后,它就成功了。我也在等待一个真正的答案。我猜我只是个工程师:)问号是“任何类型”的能指。因此,在本例中,任何类型都可以扩展或实现Set。使用此方法的演示。(如果我理解得足够清楚的话。)@MichaelMcKay
Supplier
get()
方法直接返回一个
Set
,不需要检查类型和强制转换。非常有趣。介意更详细地介绍一下它到底是如何工作的吗?@Sherz更有趣的是,我不知道……试过之后,它就成功了。我也在等待一个真正的答案。我猜我只是个工程师:)问号是“任何类型”的能指。因此,在本例中,任何类型都可以扩展或实现Set。使用此方法的演示。(如果我理解得足够清楚的话。)@MichaelMcKay
Supplier
get()
方法直接返回一个
Set
,不需要检查类型和强制转换。
Set<Supplier<Set>>
Set<Supplier<Set<Object>>>
Set<Supplier<Set<?>>>