As I know, this is not supported using wildcard generics. This can be done using generated types.
public abstract class A{}
public interface B{}
public class Match extends A implements B{}
public class NotMatch1 implements B{}
public class NotMatch2 extends A{}
public class MyChecketList<T extends A&B> extends ArrayList<T>{}
public void use(){
List<Match> a = new MyChecketList<>();
List<NotMatch1> b = new MyChecketList<>();
List<NotMatch2> c = new MyChecketList<>();
MyChecketList<Match> d = new MyChecketList<>();
MyChecketList<NotMatch1> e = new MyChecketList<>();
MyChecketList<NotMatch2> f = new MyChecketList<>();
}
Bedla source
share