集合供应商的一般集合

时间:2017-12-07 14:30:19

标签: java generics

我正在尝试创建一组套装供应商。内部集可以是任何类型(字符串,数字等)。我希望能够将供应商添加到此集合并检索它们。当我检索它们时,我知道我不知道什么类型的Set供应商正在返回,并且它可以是Supplier<Set<Object>>。我该如何声明这个Set?

我试过

1

Set<Supplier<Set>>

哪个有效,但后来我没有通用化内部Set,这似乎不对

2

Set<Supplier<Set<Object>>>

但是我无法添加Supplier<Set<String>>

3

Set<Supplier<Set<?>>>

但是我仍然无法添加以上内容(并且我无法从该套装中取出任何东西,我想)

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

声明为Set<Supplier<? extends Set<?>>>。 我认为它起作用的原因是因为Supplier<?>是任何供应商的超类型,Supplier<? extends Set<?>>是任何集合供应商的超类型。虽然Supplier<Set<?>>与任何具体类型的集合供应商的类型不同,例如Supplier<Set<String>>