public class IterableGenerics { interface Data extends Iterable<String> {} <T extends Data> void typeParam(T t) { for (String s : t) ; } void wildcard(Iterable<? extends Data> t) { for (Object a : t.iterator().next()) ; } }