0
假設你有以下:爪哇 - 收集泛型類的,每一個不同的泛型類型
@AllArgsConstructor
public class Foo<A> {
A a;
}
,你有以下:
Foo<String> fooString = new Foo<>("abc");
Foo<Integer> fooInteger = new Foo<>(10);
List<Foo> foos = new ArrayList<>();
foos.add(fooString);
foos.add(fooInteger);
我要循環列表的foos
for (Foo foo : foos) {
...
}
首先,是否有不同的方式來完成此?
然後,我該如何引用列表中每個foo對象的泛型?我嘗試了一個通配符,但我遇到了編譯錯誤「capture#1-of-?...」
「那麼,我該如何引用列表中每個foo對象的泛型」< - 爲什麼要這樣做呢?你的目標是什麼?至於另一種實現這種方式的方法:既然你的Foo類沒有太多的功能,我不明白你爲什麼不使用列表
當您單獨使用'Foo'時,您使用的是* raw * generic。不要這樣做。爲了使列表中包含'Foo'和'Foo ',將其聲明爲'List >'。然後循環應該是'for(Foo > foo:foos)',並且在構建混合列表時,你現在每個人都有正常的問題:你不知道每個值調用'instanceof'的類型。因此,您需要在循環內部使用像if(foo.getA()instanceof String){...}這樣的代碼,這通常是一個壞主意。 –
Andreas