Following is a static function code snippet
public static void safeIterate(Iterable<? extends CombatComponent> iterable, Consumer<? extends CombatComponent> consumer) {
Iterator<? extends CombatComponent> iterator = iterable.iterator();
while (iterator.hasNext()) {
consumer.accept(iterator.next());
}
}
such code snippet could not compile successfully unless I change the second function parameter to Consumer<CombatComponent> consumer
, which confused me a lot.