Java泛型让声明方法返回子类型

接口A定义以下ide

public interface A<T extends A<T>> {.net

T add();

} 1 2 3 4 5 说明:A接口只有一个add方法,返回泛型T。T的声明有些饶<T extends A<T>>。code

A接口的实现类B继承

public class B implements A<B> {接口

[@Override](https://my.oschina.net/u/1162528)
public B add() {
    return null;
}

} 1 2 3 4 5 6 7 8 注意,此处类B里的add方法返回类型B。也就是说,接口A里声明的方法时并不知道子类型B的存在,经过继承和泛型,能够放返回值动态的适配子类型,这一切都要归功于<T extends A<T>>class

相关文章
相关标签/搜索