import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; public class Test { public static void main(String[] args) { A a = A.mkA(23, 42); Iterator iter = a.getL().iterator(); removeOdd(iter); } private static void removeOdd(Iterator iter) { while (iter.hasNext()) { if (iter.next()%2 != 0) iter.remove(); } } } class A { private List l; private A(List l) { this.l = l; } public static A mkA(Integer... is) { return new A(Arrays.asList(is)); } public static A mkA2(int i) { return new A(Collections.singletonList(i)); } public List getL() { return l; } } class Parent { public void removeFirst(List l) { l.iterator().remove(); } } class Child extends Parent { public void test(String... ss) { removeFirst(Arrays.asList(ss)); } }