java – 通过将新类型指定为泛型的实际类型来扩展泛型有什么好处

我在某处看到了这种模式:
class A extends B<A> {

}

通过将新类型指定为泛型的实际类型,此结构对于扩展泛型有点不寻常.有什么用?这个模式有名字吗?有没有替代模式?

示例:https://code.google.com/p/selenium/wiki/LoadableComponent

跳转到:public class EditIssue扩展了LoadableComponent< EditIssue> {

编辑:
阅读完回复后,我似乎需要改变编译器对类型检查的理解.在我的脑海里,我的牛肉有这种模式,如果两个A需要相同,那么有没有办法不重复它们?但似乎没有更好的方法将派生类的类型传播给父类.

解决方法

当然,OOP的答案是A是​​B.如果A不是B而不是A应该只用B来构成B以利用B的功能.

据推测,B还有一些通用实现,它们利用了对泛型类型的限制.

一个用例是B看起来像:

abstract class B<T extends B<T>> {
    public T createcopy(T t);
}

现在,子类可以实现createcopy,客户端代码可以安全地使用它而无需转换…

class A extends B<A> {
    public A createcopy(A t) {
        return new A(t); //copy constructor
    }
}

比较以上内容

abstract class B {
    public B createcopy(B t);
}
class A extends B {
    public B createcopy(B t) { //Is the copy an A or a different subtype of B? We don't kNow.
        return new A(t); //copy constructor
    }
}

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...