import java.util.List; class Test { interface P { } public abstract class AP implements P { } public class AP1 extends AP { } public class AP2 extends AP { } private static final List> AP_LIST = listOf(AP1.class); private static List listOf(T... ts) { return null; } public static void test() { List> apList1 = (List>) AP_LIST; List> apList2 = (List>) AP_LIST; } }