遍历一个通用集合

Jak*_*ake 0 java generics

让我们说我有功能

void sell(Collection<? extends T> items) {
   for (? e : items) {
      stock.add(e);
   }
}
Run Code Online (Sandbox Code Playgroud)

你可以看到,我想通过项目迭代,但我不能使用符号? e,因为它吐出错误"表达的非法启动."

Joh*_*ica 10

集合中的每个项目都是一个T或一个子类T,因此您可以使用T.你不知道物品的确切类型,但这无关紧要; 你知道他们共同的基类.

for (T e: items) {
    stock.add(e);
}
Run Code Online (Sandbox Code Playgroud)