import java.util.*; class Test { interface Condition {} class IOC implements Condition {} static List filter(T[] c, Condition con) { return null; } interface OE {} interface LOE extends OE {} void foo(OE[] es, IOC con) { List l = filter(es, con); } }