古怪循环泛型:创建一个类的时候,其所继承的泛型类接受当前所创建的类的类型作为参数。
1 interface GenericGetter<T>{ 2 T get(); 3 } 4 5 interface Getter extends GenericGetter<Getter>{}
自限定:将当前创建的类作为继承的泛型类的泛型参数边界
作用:保证类型参数必须与正在被定义的类相同
1 interface GenericGetter<T extends GenericGetter<T>>{ 2 T get(); 3 } 4 5 interface Getter extends GenericGetter<Getter>{}
参数协变:方法的参数类型会随着子类的变化而变化。
1 class Parent<T extends Parent<T>>{ 2 T get(T obj) { 3 return obj; 4 } 5 } 6 7 class Child extends Parent<Child>{}
原文:https://www.cnblogs.com/ldlblog/p/14893540.html