1 2 3 4 5 6 7 8 9 10 11
//class LionCage extends Cage<Lion> {} //class Lion extends Animal<LionCage> {} class Animal<T,R> { } class Bar {} interface XXX<T> {} interface YYY<T> {} public class Cage<T extends Animal<? super XXX<T>,YYY>> extends Bar { }